2011-09-28 48 views

回答

2

下面是一個想法:在您的代碼庫中添加一個根本不用的類。 Proguard會混淆和/或刪除它。因此,如果已通過ProGuard運行,則通過應用程序中的反射加載它應該會導致ClassNotFoundException

+0

在我看來,我認真地試圖找到這個嘗試的缺陷......我只是不能這樣做。這不會經常發生......優秀的答案先生!大聲笑 – rf43

+0

有一個警告 - 閱讀我的答案。 –

+0

我站在(有點)更正:) – rf43

1

由於@Sean提出使用一個沒有(外部)依賴關係的類。

但要注意,ProGuard的可檢測使用反射,所以你必須以某種方式從字符串名稱加載類,不使用一個字符串(文本資源也許?):http://proguard.sourceforge.net/index.html#/FAQ.html%23forname

+0

這是正確的,因爲ProGuard會忽略R文件。那是我想到的方法,因此我之前的評論大聲笑 – rf43

+0

我不確定我明白你的意思嗎?在字符串資源文件中硬編碼未使用的類名稱? –

+0

是的。或者使用任何其他動態方式生成一個字符串。 –

0

選擇它總是改名類由混淆之後由Proguard。它的名字是ExampleClass.java在下面的代碼。在運行系統中使用以下行檢查其名稱:

ExampleClass.java 
...  
public static final boolean OBFUSCATED = !ExampleClass.class.toString().contains("ExampleClass"); 

就是這樣。沒有助手類或方法是必需的,並且沒有引起異常。

相關問題