Proguard找不到引用的类?

时间:2013-06-20 01:18:14

标签: android proguard

我已经使用proguard几个月了,今天我开始收到这个警告:

[proguard] Initializing...
[proguard] Warning: com.me.MyFragment: can't find referenced class com.me.MyFragment$1
...

这是有问题的代码:

public class MyFragment extends Fragment {
    private static final boolean DEBUG = false;

    public void foo() {
        if (DEBUG) {
            Button btn = new Button();
            btn.setOnClickListener(new OnClickListener() {
                ...
            });
            ...
        }
    }
}

OnClickListener是缺少的$ 1引用。但是如果DEBUG布尔值设置为false,则不应该触及此代码,所以我不明白为什么proguard会在这里警告我。

如果我将布尔标志设置为true,则proguard会在没有警告的情况下正常运行。知道如何发生这种情况吗?

由于

1 个答案:

答案 0 :(得分:2)

ProGuard在读取输入之后和执行任何处理之前打印出此错误。显然,输入包含com / me / MyFragment.class,但不包含其匿名内部类com / me / MyFragment $ 1.class。您可能希望从干净的构建开始。然后,您应该确保ProGuard正在运行之前的构建步骤:编译,打包,......您可以检查传递给ProGuard的输入。