2011-02-11 3 views
1

ProGuardを使用してJavaアプリケーションを難読化しようとしています。 GUI(Swing)フォームからテキストと画像がすべて消えてしまうという問題が発生しています。最適化を無効にしてライブラリを増やしてみましたが、何も動作していないようです。ProGuardはJavaアプリケーションを中断します - テキストなし、画像なし

私は逆コンパイラで生成された出力をデコンパイラで検査しましたが、私のリソースパスはまだ正しいと思われます。

  1. jre/lib/rt.jar以外のコアJavaライブラリを追加する必要がありますか?
  2. 無効にする必要がある詳細設定がありますか?
  3. ...他の提案?

ありがとうございます。

答えて

3

は、ほとんどの場合、あなたのリソースは、(a)は、それらが出力JARにコピーされないので、ProGuardのリソースを含むパッケージを難読化されたときに変更され、または(b)は削除されているパスを介してアクセスされているいずれかです。

設定にJavaランタイムクラスを明示的に組み込む必要はありません。

次のオプションで見たいと思うかもしれません:[class_filter]クラス名に対応して文字列定数は、同様に難読化されなければならないことを指定し

-adaptclassstrings。フィルタがなければ、クラス名に対応するすべての文字列定数が適応されます。フィルタでは、フィルタに一致するクラスの文字列定数のみが適合します。たとえば、コードにクラスを参照する多数のハードコードされた文字列が含まれていて、名前を保持したくない場合は、このオプションを使用できます。主に、難読化するときに適用されますが、対応するクラスも自動的に短縮ステップに保持されます。

-adaptresourcefilenames [file_filter]対応するクラスファイル(存在する場合)の難読化された名前に基づいて、名前を変更するリソースファイルを指定します。フィルタがなければ、クラスファイルに対応するすべてのリソースファイルの名前が変更されます。フィルタを使用すると、一致するファイルのみの名前が変更されます。たとえば、リソースファイルの処理を参照してください。難読化する場合のみ適用されます。

-adaptresourcefilecontents [file_filter]内容が更新されるリソースファイルを指定します。リソースファイルに記述されているクラス名は、対応するクラス(存在する場合)の難読化された名前に基づいて名前が変更されます。フィルタがなければ、すべてのリソースファイルの内容が更新されます。フィルタを使用すると、一致するファイルのみが更新されます。リソースファイルは、プラットフォームのデフォルトの文字セットを使用して解析され、書き込まれます。このデフォルト文字セットは、環境変数LANGまたはJavaシステム・プロパティーのfile.encodingを設定することによって変更できます。例については、リソースファイルの処理を参照してください。難読化する場合のみ適用されます。

詳細はhttp://proguard.sourceforge.net/manual/examples.html#resourcefilesを参照してください。

+0

アイデアをありがとう、私はそれらのショットを与えるでしょう。 – jocull

+0

私はProGuardがこの種のもので動作することを知っています。私は、アイコンや他の画像と一緒にバンドルするいくつかのGUIアプリケーションを持っており、それらはうまく動作します。私の場合は、画像がJARのルートに束ねられていると思います。 –

+0

この問題は、NetBeanのGUIビルダーおよびクラスに関連付けられた* .propertyファイルと関係があります。それはリソースフォルダに入れられ、それは難読化されていません...だから問題があります。ここの解決法は、これらのクラス名を難読化しないように指示しています。 http://sourceforge.net/projects/proguard/forums/forum/182456/topic/3983208もっと良い解決策があるのだろうか? – jocull

0
  1. 不明。 OTOH、どういう意味ですか? "コア Javaライブラリ外側のjre/lib/rt.jar"矛盾?

  2. 私は同様の問題がありました。 PGを何もしないようにしてから、私のクラスなどの一部の難読化を許可しました。問題のバイナリ検索です。最後に、私は犯人を見つけ、ほとんどすべてを不明瞭にする可能性がありました。

  3. 例外を飲み込まないように注意してください。 Class.getResourceを使用して画像にアクセスして、動作するかどうかを調べます。すべてを無効にする。

+0

申し訳ありませんが、まだ少しJavaに新しいです。 Javaのインストールディレクトリにある 'charsets.jar'のようないくつかのjarファイルを見て、それが私の行方不明のテキストと関連していると思っていました。提案のおかげで、私はどこで得ることができるかを見ていきます。 – jocull

関連する問題