質問

私は Antenna を使用して j2me アプリを構築、パック、難読化しています。構築と梱包は正常に動作します。

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

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

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

Class 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 が生成されます。

私に足りないものは何でしょうか?

役に立ちましたか?

解決 2

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

他のヒント

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

  1. クラスだけを Jar 化します (サードパーティのライブラリは含めないでください)
  2. ステップ 1 で取得した jar を難読化します
  3. 手順 2 で取得した難読化された jar とサードパーティのライブラリを一時フォルダーに解凍します。
  4. すべての unjar クラスを Jar 化します
  5. 事前検証して再度パッケージ化します

jshrinkを使ってみてください。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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top