2013-07-10 26 views
6

我的應用程序中有多個類提供public static void main(String[] args)方法。這些方法只在開發/測試期間需要,我希望ProGuard將它們移除(但只有這些方法,而不是整個周圍的類)。我試過使用-assumenosideeffects,但這似乎隻影響調用方法,而不影響方法本身。我如何強制Proguard刪除整個main()方法,儘管他們是publicstatic如何強制ProGuard刪除公共靜態方法?

+0

是不是有一個優化,已經刪除未使用的方法? –

+0

當然,如果您啓用收縮,未使用的代碼將被刪除。但關鍵是你不能確定'public static'方法是否未被使用,因爲它可能在你的代碼之外被使用。這就是爲什麼我需要以某種方式強制刪除。 – sschuberth

+0

我認爲proguard給你的是排除函數和類被它修改的能力,所以你不能在你希望它不會觸及的函數上使用它嗎? –

回答

0

ProGuard需要種子來確定需要保留哪些類/方法。從這些種子引用的任何東西也將被保留。

-assumenosideeffects選項用於刪除對結果沒有任何使用方式的實際調用,但並不一定表示該方法本身已被刪除。

在您的具體情況中,您可能有一條規則保留所有public static void main(String[])方法,因爲這將是java應用程序的標準種子。

您可以使用-whyareyoukeeping選項分析保留特定方法/類的原因。