2012-02-15 37 views
1

求索下面的代碼結構的android:Proguard的設置不刪除未使用的方法

package blah; 
class A{ 
    class B{ 
     public void foo(String s){ 
     } 
    } 
} 

我怎麼能告訴ProGuard不要刪除或模糊FOO。
foo在編譯時是代碼中未使用的函數,但在運行時從另一個代碼運行。

我曾嘗試:

-keep class blah.A.B; 

-keepclassmembers class blah.A.B { 
    public void foo(String s); 
} 

等,但沒有從去除功能停止Proguard的。 我不想讓proguard改變'foo'的名字。 Proguard可能會更改類A或類B的名稱,但不會更改函數名稱「foo」。 有什麼建議嗎?

回答

3

幾乎正確。在java字節碼中,$字符分隔內部類和它們外部類的名稱(以避免包名稱含糊不清)。所以,只保留方法:

-keepclassmembers class blah.A$B { 
    public void foo(java.lang.String); 
} 
+0

爲了避免包名的歧義...哦,我明白了。謝謝。 – 2012-02-16 18:53:30

0

我有一個方法'myClickHandler'只在一個XML文件中引用。

-keepclassmembers class * extends android.app.Activity { 
    public void myClickHandler(android.view.View); 
} 

停止它在我的應用程序被刪除。也許延伸..將爲你工作

相關問題