ProGuards始终删除方法调用

时间:2014-05-04 11:15:20

标签: java methods proguard

Proguard从runnable中删除我的方法,但是只有我将这个类与runnable(嵌套类)一起添加到异常......

所以...如果我通过-keep将它添加到异常,那么为什么要删除方法调用? (这是此runnable中唯一的一行,它将其删除......)

Main.createTask(pl, new Runnable()
{

    @Override
    public void run()
    {
        try
        {
            myMethod(false);
        } catch (final IOException e)
        {
            Main.log(Level.WARNING, "...");
        }
    }

});

在继续之后......

Main.createTask(pl, new Runnable()
{

    @Override
    public void run()
    {
        try{} catch (final IOException e)
        {
            Main.log(Level.WARNING, "...");
        }
    }

});

1 个答案:

答案 0 :(得分:0)

ProGuard的优化步骤可能会在两种情况下删除该方法:

  • 调用该方法无论如何都没有效果。
  • 您已使用与方法匹配的参数指定了-assumenosideeffects。与通配符一起使用是一种危险的选择。您可以轻松删除或注释掉所有-assumenosideeffects选项,以检查这是否是原因。

如果您正在使用反编译器检查已处理的代码,您可能需要检查反编译器是否正常工作。您可以使用javap -c仔细检查。