android - Proguard找不到引用的类?

标签 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 bool 值设置为 false,则不应触及此代码,因此我不明白为什么 proguard 会在这里警告我。

如果我将 bool 标志设置为 true,则 proguard 可以正常运行且不会发出警告。知道这是怎么发生的吗?

谢谢

最佳答案

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

关于android - Proguard找不到引用的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203853/

相关文章:

java - 如何在android studio中将堆栈从一个 Activity 传递到另一个 Activity

android - 为什么 LineNumberTable 在 Android 的 ProGuard 配置中没有默认启用?

java - Proguard 保留所有 java 接口(interface)

java - 转换为 Dalvik 格式失败,错误 1

java - Android Proguard - 运行时崩溃(未达到 "onCreate()")

java - 覆盖Android中顶部菜单问题的后退按钮事件

java - 是否可以在 Android 上禁用 AES/CCM 中的消息身份验证检查?

android - 忽略外部库的混淆配置

android - GridView 的滚动偏移量

android - 我可以向 Google Play 提交具有不同包名称和显示名称的相同 APK 吗?