1

私はアンテナを使用して、j2me アプリをビルド、パック、および難読化しています。ビルドとパッキングは正常に機能します。

このプロジェクトは、一部のインターフェースを除いて、すでに難読化されているサードパーティの jar を使用しています。

難読化しようとすると、次のようないくつかのエラーが発生しました。

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

クラス i と fooPackage.fooClass は、私が言及したこのサードパーティの jar からのものです。

更新

このサードパーティ ライブラリは、j2me-xmlrpc.jar を使用します。すべてをまとめてパッケージ化しないと、サードパーティ インターフェイスと j2me-xmlrpc.jar を難読化できなくなります。(そして、この方法でアプリを実行できません。理由はわかりません)

j2me-xmlrpc.jar とプロジェクト クラスのみをパッケージ化すると、難読化中にこのエラーが発生します。

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

更新 2:

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

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

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

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

Netbeans で難読化すると多くの警告が生成されますが、それでも難読化された jar が生成されます。

私は何が欠けていますか?

4

3 に答える 3

1

私はProguard 4.3を使用していました。Proguard 4.2 にダウングレードすると、問題が解決しました。

于 2009-10-08T22:50:20.687 に答える
1

サード パーティのライブラリが難読化されている場合は、クラスを難読化するときにそのライブラリを含めないでください。むしろ、これらの手順に従ってください

  1. クラスを単独でjarします(サードパーティのライブラリを含めないでください)
  2. 手順 1 で取得した jar を難読化する
  3. 手順 2 で取得した難読化された jar とサード パーティのライブラリを一時フォルダーに展開します。
  4. jar されていないすべてのクラスを jar する
  5. それらを事前検証して再度パッケージ化する
于 2009-06-10T08:11:05.273 に答える
0

jshrink を使用してみてください。プロガードを使用するよりもはるかに優れた結果が得られます。

                    <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>
于 2009-07-21T07:12:03.387 に答える