別のjarファイル(ライブラリjarとして渡される)からのインターフェースを実装する匿名クラスがあります。
//Some jar file
public interface B
{
void methodA();
}
//My App
public class A implements B
{
public void methodA()
{
//implementation here
}
}
アプリでは次のように使用されます。
B var = new A();
var.methodA();
バグ (抽象メソッドの呼び出し) に遭遇した後、ProGuardの名前methodA()
が classに変更されていることに気付きましたA
。このような誤った難読化のインスタンスがさらにある可能性があることに注意してください。
- プロガードがそのようなインターフェース実装の名前を変更しないようにするにはどうすればよいですか?
- そもそもなぜメソッドの名前を変更しているのでしょうか?
編集:
これは、ライブラリ jar を指定する方法です。
<libraryjar filter="!**\some.specific.jar,${base.dir}\dist\lib\*.jar" />
も試しました:
<libraryjar jarfilter="!**\some.specific.jar" />
<libraryjar jarfilter="${base.dir}\dist\lib\*.jar" />
どちらも機能しませんでした。ProGuard は、フィルターで指定されたライブラリ jar を読み取りません。明示的に指定されたものだけを読み取ります。