2011-10-24 125 views
18

我正在使用proguard來模糊我的android應用程序。 android應用程序包含一些本地代碼,它可以回調完全限定的java方法。我不需要混淆這些類和他們方法的名稱。下面恰當地保留類名稱,但不包括方法名稱。在proguard中,如何保留一組類的方法名?

-keep public class com.me.dontobf.* 
-keepnames public class com.me.dontobf.* 

回答

48

對於本地方法:ProGuard manual > Examples > Processing native methods

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

在這種情況下,回調方法:ProGuard manual > Examples > Processing callback methods

-keep class mypackage.MyCallbackClass { 
    void myCallbackMethod(java.lang.String); 
} 

或者例如,如果所有的公共方法可能是回調方法:

-keep class mypackage.MyCallbackClass { 
    public <methods>; 
} 

你可能還需要不斷髮生的方法描述的任何程序類。

+0

這個工程。謝謝。 – ab11

+0

這可以幫助我很多。謝謝! –

+0

我如何保存用戶定義的代碼? –

2

嘗試:

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

從ProGuard的手冊:http://proguard.sourceforge.net/manual/examples.html#native

+2

您的建議對我無效。我需要保留從本地代碼調用的非本地方法的方法名稱。你的建議保留了包含本地方法的類的類名。 – ab11

相關問題