Java ProGuard删除方法调用创建无用代码
所以我有一个小界面Java ProGuard删除方法调用创建无用代码,java,methods,proguard,Java,Methods,Proguard,所以我有一个小界面 public interface IPlayersStorage { // other methods... public boolean addException(final String nick); // other methods... } 和实现它的类“PlayersStorage:(仅使用部分) 并将其更改为: for (Iterator localIterator1 = this.cfg.getStringList("Exception
public interface IPlayersStorage
{
// other methods...
public boolean addException(final String nick);
// other methods...
}
和实现它的类“PlayersStorage:(仅使用部分)
并将其更改为:
for (Iterator localIterator1 = this.cfg.getStringList("Exceptions").iterator(); localIterator1.hasNext();)
{
localIterator1.next();
PlayersStorage.getStorage(); // it's get object, but don't do anything with it...
}
我找到的唯一可能的修复方法是将静态方法添加到PlayersStorage
public static boolean staticAddException(final String nick)
{
return inst.addException(nick);
}
然后使用它(而不是旧代码)
然后工作。。。(ProGuard keep method call)但为接口中的每个方法添加静态方法不是一个好主意。ProGuard仅在方法调用没有任何效果(这里似乎不是这种情况)或者您为方法指定了
-AssumeNosiDefects
时才删除方法调用。您应该检查配置并删除任何此类选项
或者,反编译器可能在反编译代码时遇到问题。然后应该使用javap-c
检查实际字节码
for (Iterator localIterator1 = this.cfg.getStringList("Exceptions").iterator(); localIterator1.hasNext();)
{
localIterator1.next();
PlayersStorage.getStorage(); // it's get object, but don't do anything with it...
}
public static boolean staticAddException(final String nick)
{
return inst.addException(nick);
}
for (final String player : this.cfg.getStringList("Exceptions"))
{
PlayersStorage.staticAddException(player);
}