1
我試圖使用proguard對Java MIDlet進行混淆。它在PC上運行正常,但是,當我在手機上運行它時,程序打開,連接到服務器,然後凍結。如果我禁用混淆處理,它會在手機上再次運行。我嘗試了應用程序的所有混淆級別(NetBeans中的7,8和9),並且它們中的任何一個似乎都不能正常工作,並且我無法發佈此應用程序以供商業用途使用,不會造成混淆。此外,編譯器會引發一些警告:混淆(proguard)是否會導致MIDlet出現故障?
Note: duplicate definition of library class [java.io.ByteArrayOutputStream]
Note: there were 14 duplicate class definitions.
但是我不知道這是否是真正的問題。有誰知道什麼是錯的?混淆器參數如下:
Obfuscator Arguments (7):
-dontusemixedcaseclassnames
-default package ''
-keep public class ** {
public *;
}
Obfuscator Arguments (8): same as (7) plus -overloadaggressively.
Obfuscator Arguments (9): same as (8) but
-keep public class ** extends javax.microedition.midlet.MIDlet {
public *;
}
instead.
謝謝。
是的,我知道沒有代碼很難找到問題,但我沒有任何ideia代碼的一部分導致這一點,因爲系統中有很多類,我不能粘貼所有這些。 Im顯示了警告的最後2行,因爲這些類看起來太泛泛,給了我一個錯誤在哪裏的提示,例如:注意:庫類[javax.microedition.media.control.VolumeControl]的重複定義,而且我的應用程序甚至沒有聲音或任何媒體類型......如果有某種外部呼叫可能導致此問題,請正確指出,謝謝。 – eMgz 2010-05-20 21:35:34
@eMgz - 是否有可能把代碼燒到一個非常短的代碼片段展現相同的凍結? (可能幫助你回到問題上,即使發佈的代碼太多。) – 2010-05-20 22:00:55
我不這麼認爲,有很多類來處理記錄存儲,連接,線程,圖像等,但我試圖使用-keep選項逐個調試。不管怎麼說,還是要謝謝你。 – eMgz 2010-05-21 20:14:24