6

Androidアプリケーションを実行しようとするときに、Eclipseがdexする前に常にproguardを実行するようにする方法はありますか?たとえば、ビルドステップとしてシームレスに挿入する方法はありますか?

デフォルトでは、エクスポート時に実行されますが、たとえばメニュー/キーボードから通常の「実行」または「デバッグ」を実行する場合でも、常に実行する必要があります。


コンテキストとして、これが関連する理由は、「オペコードが多すぎる/拡張されたオペコードがない」(http://code.google.com/p/android/issues/detail?id=26203)の問題が発生しているためです。 Eclipseでのビルド。未使用のコードをすべて削除するproguardを実行するため、antビルドでは問題になりません。これまで、サードパーティの依存関係から未使用のものを手動で削除してきましたが、ややばかげています。

また、副次的な利点として、シュリンクのみのプロガードの実行がデックスよりもはるかに高速であり、デックスする必要のあるコードのほとんどが削除されるため、ビルドが劇的に高速化されるはずです。

4

1 に答える 1

7

この動作は、AndroidDevelopmentToolsのEclipseプラグインのビルダーにハードコーディングされています。ソースコード(Android Tools)を調整して、ビルダーがエクスポートウィザードのように動作するようにすることができます(または、内部的には、BuildHelperクラスがExportHelperクラスのように動作します)。しかし、それを維持するのはそれほど楽しいことではないかもしれません。

または、EclipseからAntを実行することもできます。

また、代わりに、ProGuardの商用のクローズドソース兄弟であるDexGuardは、ProGuardとdx(およびapkbuilder、jarsign、zipalign)の機能を統合します。EclipseおよびAntでのデバッグ/リリースビルド用に縮小/難読化/最適化するように構成できます。

(私はProGuardとDexGuardの開発者です)

于 2012-07-04T14:38:30.343 に答える