2014-10-03 2 views
0

У меня возникла проблема с моей пользовательской аннотацией после запуска ProGuard.Аннотации интерфейса и ProGuard

Вот соответствующий код:

Аннотация

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.TYPE) 
public @interface MyAnnotation { 

} 

класс А простирается Аргументы B

... 
@MyAnnotation 
public interface CustomInterface { 
} 
... 

абстрактного класса B

// mClass never found since MyAnnotation seems to be disappeared 
// after obfuscation 
for (Class<?> c : getClass().getClasses()) { 
    for (Annotation annotation : c.getAnnotations()) { 
     if (annotation instanceof MyAnnotation) { 
      mClass = c; 

      break; 
     } 
    } 
} 

Я пробовал много утверждений, которые содержатся в соответствующих сообщениях, но ни один из них не содержит этот случай.

Запуск кода без ProGuard правильно находит класс для члена mClass.

ProGuard конфигурации имеет:

-keepattributes *Annotation* 

Спасибо.

ответ

0

следующий код всегда работает для меня

-keepattributes аннотацию

+0

Спасибо, но у меня уже есть это определение. – Niko

0

После заявления, кажется, решить эту проблему:

-keep @com.mycompany.myapp.MyAnnotation interface * { 
*; 
} 
Смежные вопросы