1

JavaMIDletをproguardで難読化しようとしています。PCでは問題なく動作しますが、電話で実行すると、プログラムが開き、サーバーに接続してからフリーズします。難読化を無効にすると、電話で再び正常に実行されます。アプリのすべての難読化レベル(NetBeansでは7、8、および9)を試しましたが、どれも正しく機能していないようです。このアプリを難読化せずに商用利用することはできません。また、コンパイラはいくつかの警告をスローします。

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.

ありがとう。

4

1 に答える 1

1

難読化は物事を壊す可能性があります。鉢植えのサンプルコードがなければ、何が間違っているのかを正確に言うのは難しいです。うまくいかない可能性のある例としては、コードに名前でクラスをロードした場合があります。難読化されたクラスの名前は異なるため、見つかりません。

あなたが言及するメッセージは問題を示している可能性があります-あなたはあなたの道にそれらのクラスを複数回持っている必要があります。あなたが言及しているそのクラスは、あなたが問題を抱えている接続に関連していますか?使用中のjarを注意深く調べ、適切な(そして最小限の)クラスのセットがアプリケーションに含まれていることを確認してください。CLDCのByteArrayOutputStreamは、デスクトップJDKの場合と同じではありません。

于 2010-05-20T20:59:50.687 に答える