我正在使用包含GroundTask类的android“Groundy”库,它使用了注释。我进一步创建了一个类
public class DownloadTask extends GroundyTask
和一个回调对象:
private final Object mCallback = new Object() {
@OnProgress(DownloadTask.class)
public void onNiceProgress(@Param(Groundy.PROGRESS) int progress) {
mProgressDialog.setProgress(progress);
}
....
但是在使用proguard进行obfusecation之后,使用“OnProgress”注释的方法永远不会被调用(但不会发生错误)
在proguard文件中,我添加了
-keep class com.telly.groundy.*** {
public protected private *;
}
-keepattributes *Annotation*, EnclosingMethod
-keepattributes *OnSuccess*
-keepattributes *OnProgress*
-keepattributes *OnCancel*
-keepattributes *OnCallback*
-keepattributes *OnFailure*
-keepattributes *OnStart*
-keepattributes *Param*
-keepattributes *Traverse*
-keep class com.my.namespace.DownloadTask {
public protected private *;
}
在这里可能会遗漏哪些“保持”配置?
答案 0 :(得分:1)
我刚刚在自述文件中添加了基本的proguard配置。它看起来像这样:
-keepattributes *Annotation*
-keepclassmembers,allowobfuscation class * {
@com.telly.groundy.annotations.* *;
<init>();
}
-keepnames class com.telly.groundy.generated.*
-keep class com.telly.groundy.generated.*
-keep class com.telly.groundy.ResultProxy
-keepnames class * extends com.telly.groundy.ResultProxy
-keep class * extends com.telly.groundy.GroundyTask
答案 1 :(得分:0)
ProGuard不知道代码通过反射访问注释,因此您可能需要明确地保留它:
-keep @interface com.telly.groundy.annotations.OnProgress