2009-06-09 15 views
1

私はj2meアプリケーションをビルド、パック、難読化するためにアンテナを使用しています。 建物と梱包は問題なく動作します。難読化のトラブル

このプロジェクトでは、一部のインターフェイスを除いて既に難読化されているサードパーティ製のjarファイルが使用されています。 iとfooPackage.fooClassは、私が述べたこのサードパーティの瓶からである

[wtkobfuscate] Warning: i: can't find referenced class fooPackage.fooClass 

クラス:難読化しようとすると

は、私のようないくつかのエラーを得ました。

UPDATE

このサードパーティのライブラリは、J2ME-xmlrpc.jarを使用しています。すべて一緒にパッケージ化しなければ、サードパーティのインターフェイスとj2me-xmlrpc.jarを難読化することはできません。 (と私はこの方法でアプリケーションを実行することはできません、理由はわからない)

私は唯一のJ2ME-xmlrpc.jarと私のプロジェクトのクラスをパッケージ化する場合

[wtkobfuscate] Warning: there were 2 instances of library classes depending on program classes. 

UPDATEを難読化しながら、私はこのエラーを取得します2:

私はこの難読化がNetbeansで可能であることを知っています。私はProguardを使用して難読化を行うことができます。

Netbeans内部ではANTを使用してビルドを行っているので、生成されたbuild.xmlを自分のbuild.xmlにコピーしようとしました。

難読化のために、NetbeansはNetbeansの外部で使用できるorg-netbeans-modules-mobility-antext.jarライブラリを使用します。このライブラリをプロジェクトにインポートして問題なく使用しました。

しかし、私はアンテナを使用しているのと同じエラーが発生します。

Netbeansで難読化すると、多くの警告が生成されますが、難読化されたjarファイルは生成されます。

私が紛失していることはありますか?

+0

どの難読化ツールを使用しますか? – Toad

+0

@reinier:Proguard 4。3 –

+0

私はjshrinkを使ってはるかに良い結果を得ました。 私はあなたにそれをテストのために送ることができます。試してみる価値があるかもしれません – Toad

答えて

1

私はProguard 4.3を使用していました。 Proguard 4.2へのダウングレードは、この問題を解決しました。

1

サードパーティのライブラリが難読化されている場合は、クラスを難読化している間はそのライブラリを含めないでください。むしろ

  • は、いくつかの一時のステップ2で得られた難読化されたjarファイルおよびサードパーティのライブラリunjarしステップ1
  • で得られたjarファイルを難読化(いけないが、サードパーティのライブラリを含む)にこれらのステップにのみ

    1. ジャーあなたのクラスに従ってくださいフォルダ
    2. ジャーすべてunjaredクラス
    3. 事前検証やjshrinkを使用してみてくださいもう一度
  • +0

    サードパーティのライブラリには、私のクラスが使用するいくつかのインタフェースが含まれています。私がそれらを含んでいなければ、ビルドとパッケージングは​​できません。 jarファイル内にあるインターフェイスから難読化されたクラスを分割する方法はありますか? –

    +0

    もちろん、コンパイル時にjavacターゲットのクラスパスにこれらのサードパーティのライブラリを含めることになりますが、それらのパッケージをパッケージ化するときには、前述のように別の方法で行うので、obfuscatorは既に難読化されたクラスを難読化するのに問題はありません。希望しない場合は、私に知らせてください。 – Ram

    +0

    明らかに、難読化ツールはサードパーティライブラリを再度難読化しません。 – Ram

    0

    それらをパッケージ化します。私はproguardを使ってもっと良い結果を得ました:

        <java jar="obfuscator\jshrink.exe" fork="true"> 
             <arg value="..\${projectdir}\${projectname}.jar"/> 
             <arg value="-classpath"/> 
             <arg pathref="project.class.path"/> 
             <arg value="-keep"/> 
             <arg value="${midletclass}"/> 
             <arg value="-o"/> 
             <arg value="..\${projectdir}\${projectname}.jar"/> 
            </java> 
    
    +0

    メールアドレス(またはその他のコミュニケーション手段)を私に与えると、あなたはそれを使って – Toad

    +1

    @reinierでテストすることができるようにjshrinkを送ることができます。あるいは彼はGoogleにそれを見つけて見つけられます:http://lmgtfy.com/? q = Jshrink + –