2

Proguard でバンドルを難読化しようとしています。プロジェクト固有の理由により、バンドルには次のようなライブラリ jar が含まれています。

bundle.jar
   |
   |-META-INF
   |
   |-library.jar
   |
   \-org (and the rest of my source tree)

META-INF の Manifest.mf ファイルには、次の行が含まれています。

Bundle-ClassPath: .,library.jar

そして、これはすべて自動生成され、優れています。

ここで、proguard が library.jar からメソッドを難読化しようとするときに問題が発生します (そうする正当な理由があるとしましょう)。そのような場合、library.jar は依存ライブラリの一部ではないため検出されず、proguard はマニフェスト ファイルの Bundle-Classpath エントリを無視しているように見えます。

では、問題は、それがまったくできるのかということです。または、proguard は完全に osgi にとらわれず、それらのタグをまったく処理できませんか? proguard に jar 内の依存関係を提供する方法はありますか?

ありがとう!

4

3 に答える 3

2

Proguardで難読化した後、以前ではなく、埋め込まれたJARを使用してバンドルをアセンブルしてみませんか?

于 2012-06-08T17:54:41.697 に答える
2

はい、ProGuard は完全に OSGi に依存しません。意図的に、どのプラットフォームからも独立しています。

さらに、ProGuard は、オプションで jar 内、オプションで war 内、オプションで ear 内、オプションで zip 内のクラス ファイルを処理しますが、jar 内の jar 内のクラス ファイルは処理しません。

Cfr. ProGuard マニュアル > 使用方法 > クラス パス。

于 2012-06-08T21:40:34.460 に答える
1

bnd (maven、bndtools など) を使用すると、jar ファイルを展開できます。次の命令を使用します。

 Include-Resource: @library.jar

その場合、クラスパスでも使用できる通常の JAR を取得します。これは、難読化者にとって問題にはなりません。このライブラリからパッケージをエクスポートする場合は、Export-Package の代わりに -exportcontents を使用します。どちらも同じ構文です。

于 2013-06-10T06:31:38.623 に答える