2016-08-08 13 views
1

現在、コンパイル時にアプリケーションから未使用のグラフィックリソースを削除しようとしています。私はAndroid Studioが未使用のものを手動で削除する手助けをすることができると知っていますが、コンパイル時にそれらを削除する必要があります。この方法で、Proguardを実行して未使用のクラスを削除し、それらのクラスから参照されているイメージを削除することができます。私はそこにそれらのファイル(さえ縮小)を持つことができませんコンパイル時にAndroidアプリケーションから未使用のリソースを削除する

android { 
    buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
     } 
    } 
} 

今私は未使用の画像は1x1の黒ドットに縮小し、私を取得され、これを行うことができます。 Proguardに実際にそれらの画像を削除する(縮小するのではなく)か、名前を変更する方法はありますか? 他のツールを使用できますか?

編集:私は、Proguardによって「未使用」と表示されたリソースを削除または名前変更する必要があります。

答えて

0

ProGuard(または新しいジャックコンパイラ)は、バイトコードを縮小して難読化するだけです。その後、リソースを縮小するツールは、未使用のリソースファイルを削除または置き換えます。

ProGuardの商用拡張版DexGuardは、Androidマニフェスト、リソース、リソースファイル、アセットファイル、およびネイティブライブラリのバイトコードを縮小、最適化、および難読化します。私が知っている限り、それは同時にすべての内容を分析し、最適化する唯一のツールです。例えば、実際には、未使用のクラスとそれに対応する未使用のリソースとリソースファイルが削除されます。

+0

こんにちはエリック、あなたの答えをありがとう。私はProguardにリソースを削除させる方法がないことを理解しています。このタスクは別のツールで実現されています。私はDexguardが実際に使用していないすべてのイメージを削除(最適化しないで削除します)することも理解しています。 –

+0

そうです、DexGuardは未使用のイメージを削除します。たとえば、リソース定数をコードやその他のリソースにインライン化するなどの最適化が行われます。 –

+0

ありがとうエリック。あなたはとても役に立ちました –

0

未使用のリソースを削除するには、ADT 16のAndroid Lintツールを使用します。未使用のリソースを削除するだけでなく、潜在的なバグを見つけるのに役立ちます。

http://tools.android.com/tips/lint

また、リリースモード

ProGuardのツールは、縮小最適化し、未使用のコードを削除し、意味的にあいまいな名前のクラス、フィールド、メソッドの名前を変更することで、あなたのコードを難読化でProGuardのを有効にすることができます。その結果、リバースエンジニアリングが難しい.apkファイルのサイズが小さくなります。

http://developer.android.com/tools/help/proguard.html

あなたは簡単にAndroidのメーカーから未使用のリソースを検索することができます。 Ctrl + Alt + Shift + iを押し、 "Unused resources"(引用符なし)と入力するだけです。それは糸くずを実行します。非常に簡単な方法lintコマンド(およびIDEから他のもの)を実行する方法。

+0

こんにちはShantoを[我々はGuardSquareでProGuardのとDexGuardを開発]、私は、Android Studioから糸くずや「未使用のリソースを削除」ツールの両方を信じて同じです。つまり、私はコンパイル時にこれらのリソースを自動的に削除する必要があります。 Proguardの適用後に未使用のまま残っているリソースも削除する必要があるため、手動で削除することはオプションではありません。 –

0

あなたには、いくつかのユーティリティを探しているなら、あなたはhttps://code.google.com/archive/p/android-unused-resources/

またはhttps://github.com/KeepSafe/android-resource-remover

を使用することができますが、この情報がお役に立てば幸いです。

+0

こんにちは、両方のツールをコンパイルする前に実行する必要がありますので、Proguardの実行後に「未使用」になったリソースは削除されません。 –

関連する問題