具有基础任务的proguard配置

时间:2013-12-29 11:31:04

标签: android annotations proguard groundy

我正在使用包含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 *;
}

在这里可能会遗漏哪些“保持”配置?

2 个答案:

答案 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