/usr/bin/strip
LinuxのC/C ++オブジェクトファイルと同じように、Java .classファイルからデバッグ情報を削除できるツールはありますか?
編集:私はThiloとPeter Mmmの両方の答えが好きでした:Peterは短く、JDKに何が付属しているかについての私の無知を露呈するほどでした。ThiloのProGuardの提案は、それが提供するように見えるすべての追加機能について、とにかく私が間違いなくチェックしているものです。ティロとピーター、ありがとう!
/usr/bin/strip
LinuxのC/C ++オブジェクトファイルと同じように、Java .classファイルからデバッグ情報を削除できるツールはありますか?
編集:私はThiloとPeter Mmmの両方の答えが好きでした:Peterは短く、JDKに何が付属しているかについての私の無知を露呈するほどでした。ThiloのProGuardの提案は、それが提供するように見えるすべての追加機能について、とにかく私が間違いなくチェックしているものです。ティロとピーター、ありがとう!
ProGuard(たとえば、コードサイズを縮小するためにAndroid SDKに付属しています)は、JARファイルを縮小するためにあらゆる種類の操作を実行できます。
彼らはそのリストからデバッグ情報を削除することについては言及していませんが、私は彼らもそれを行うことができると思います。
更新:はい、確かに:
デフォルトでは、コンパイルされたバイトコードには、ソースファイル名、行番号、フィールド名、メソッド名、引数名、変数名など、多くのデバッグ情報が含まれています。この情報により、バイトコードの逆コンパイルとプログラム全体のリバースエンジニアリングが簡単になります。場合によっては、これは望ましくありません。ProGuardなどの難読化ツールは、デバッグ情報を削除し、すべての名前を無意味な文字シーケンスに置き換えることができるため、コードのリバースエンジニアリングがはるかに困難になります。ボーナスとしてコードをさらに圧縮します。プログラムは、例外スタックトレースで指定されたクラス名、メソッド名、および行番号を除いて、機能的に同等のままです。