2013-07-10 3 views
6

私のアプリケーションには、public static void main(String[] args)メソッドを提供する複数のクラスがあります。これらのメソッドは、開発/テスト時にのみ必要です。ProGuardでそれらを削除することをお勧めします(ただし、これらのメソッドのみ、周囲のクラス全体ではありません)。私は-assumenosideeffectsを使用しようとしましたが、それはメソッドへの呼び出しにのみ影響し、メソッド自体には影響しないようです。 publicstaticにもかかわらず、Proguardにmain()メソッド全体を強制的に削除させるにはどうすればよいですか?ProGuardに公開静的メソッドを強制的に削除させるにはどうすればいいですか?

+0

既に使用されていないメソッドを削除する最適化はありませんか? –

+0

確かに、縮小を有効にすると、未使用のコードが削除されます。しかし、ポイントは、 'public static'メソッドがあなたのコードの外側から使用されるかもしれないので、未使用であるかどうかを確かめることができないということです。だから私は何とか削除を強制する必要があります。 – sschuberth

+0

私はプロゴアードがあなたに与えることは、関数とクラスをそれによって修正されないように除外できることだと思います。 –

答えて

0

ProGuardには、どのクラス/メソッドを保存する必要があるかを判断するためのシードが必要です。これらの種子から参照されるものはすべて保管されます。

-assumenosideeffectsオプションは、結果が決して使用されないメソッドへの実際の呼び出しを削除するために使用されますが、メソッド自体が削除されているとは限りません。

具体的には、public static void main(String[])のすべてのメソッドをJavaアプリケーションの標準シードにするルールがあります。

-whyareyoukeepingオプションを使用すると、特定のメソッド/クラスが保持される理由を分析できます。

関連する問題