web-dev-qa-db-ja.com

Androidプロジェクトから未使用のリソースをすべて削除する

私のAndroidのresディレクトリからすべての未使用のレイアウト、文字列、ドロアブル、色などを削除したいです。使用しなくなったファイルのリストを表示し、特定のファイル内の要素(未使用の文字列エントリなど)をリポジトリから削除できるツールはありますか。

321
Steve Prentice

Android Studioから未使用のリソースを簡単に検索できます。ただ押す CtrlAltShifti 「未使用のリソース」(引用符なし)と入力します。それはlintを実行します。 lintコマンド(およびIDEからの他のもの)を実行するための超簡単な方法。

OR

In Android Studioのメニュー> Refactor> 未使用のリソースを削除...

削除したいリソースを選択します。リソース項目を右クリックすると、保持したいリソースを除外できます。

一度にすべてのリソースを削除するには、Do Refactorを使用します。

更新: use AltShifti Mac用

606
bakua

ADT 16以降は、 Android Lint を使用できます。それは本当に素晴らしい道具です。

Android Lintは、Androidプロジェクトのソースから潜在的なバグをスキャンするADT 16(およびTools 16)用の新しいツールです。

探しているエラーの種類の例をいくつか示します。

  • 見つからない翻訳(および未使用の翻訳)
  • レイアウトパフォーマンスの問題(古いlayoutoptツールが見つけたすべての問題など)
  • 未使用のリソース
  • 配列サイズの不一致(配列が複数の構成で定義されている場合)
  • アクセシビリティと国際化の問題(ハードコードされた文字列、欠けているcontentDescriptionなど)
  • アイコンの問題(密度の欠落、アイコンの重複、サイズの間違いなど)
  • 使いやすさの問題(テキストフィールドに入力タイプを指定しないなど)
  • 明らかなエラーなど.

しかし、それにはいくつかの問題があり(すでに修正されているかどうかわからない)、未使用の何百ものリソースを削除したい場合は、リソースの削除中にLintが失敗しないように手動でプロジェクトを数回コンパイルすることをお勧めします。必要なものを削除してください。

95
Andrei Buneyeu

EclipseでのADTのサポートが終了したので、Android Studioを使用する必要があります。

Android Studio 2.0以降ではRefactor > Remove Unused Resources...を使用してください。

enter image description here

36
dieter

Android用Gradleビルドシステムは、「リソースの縮小」をサポートします。ビルド時に、パッケージアプリケーションで使用されていないリソースの自動削除。実行時に実際には必要とされていないプロジェクト内のリソースを削除することに加えて、これにより、実際にアプリケーションで必要とされていない場合は、依存しているライブラリからリソースも削除されます。

これを有効にするには、GradleファイルにshrinkResources trueという行を追加します。

   Android {
        ...

        buildTypes {
            release {
                shrinkResources true
            }
   }
}

こちらの公式文書をチェックしてください。

http://tools.Android.com/tech-docs/new-build-system/resource-shrinking

32
Prokash Sarkar

Lintの出力に基づいて、Androidプロジェクト内の未使用のリソースをすべて削除するツールをオープンソースで提供しています。それはここで見つけることができます: https://github.com/KeepSafe/Android-resource-remover

16
philipp

Lintの実行時に複数のフレーバーを使用している場合は注意してください。あなたが選択したフレーバーによっては、リントは誤った未使用のリソースを与える可能性があります。

12
MRodrigues

Android Studio 2.0以上ではメニューの[リファクタリング]を選択し、[未使用のリソースを削除]をクリックします。

(または)

ショートカットも利用可能

Ctlr + Alt + Shift + i 1つのダイアログボックスが表示されます。次に未使用と入力します。

7
Ramesh R

アンドロイドウェア開発者の注意: "未使用のリソースを削除"は機能名(res/values/wear.xml)を宣言しているxmlファイルを削除し、電話機は時計に接続できなくなります。 。私は自分のアプリでこのバグを見つけ出そうと何時間も費やした。

5
MScott

String.xmlを確認します。

それは簡単です(少なくとも私のバージョンのEclipseでは)

Android用Eclipse(バージョン22.6.2-1085508)

  • 「パッケージエクスプローラー」でプロジェクト名を左クリック
  • 「Android Tools」を選択してください。
  • [Run Lint:よくあるエラーを確認]を選択します。

Strings.xmlを開くと、未使用の文字列が強調表示されているのがわかります。

他の潜在的な問題を解決することができます。

4
Gabriel Klein

Android Studioでは、

分析 - >名前による検査の実行

(Macの場合はshift + command + option + i、Windows/Linuxの場合はCtrl + Shift + A)。

そして「未使用のリソース」と入力します。

これにより、未使用のリソース、変数、シンボル、ローカライゼーション、ライブラリなどを削除できます。

リストから希望の検査を選択し、検査範囲 - > OK を選択しますenter image description here

3
Lins Louis

多分役に立つAndround Unused Resourcesはあなたのプロジェクトの未使用リソースをスキャンするJavaアプリケーションです。未使用のリソースは不必要にスペースを占有し、ビルド時間を増やし、そしてIDEのオートコンプリートリストを乱雑にします。

それを使用するには、あなたの作業ディレクトリがあなたのAndroidプロジェクトのルートであることを確認し、そして以下を実行してください。

Java -jar AndroidUnusedResources.jar

https://code.google.com/p/Android-unused-resources/

3
user1632014

シュリンクリソースをその時定義するとき、どのリソースを保持したいか、そしてどのリソースを保持しないかを定義することができます。res/rawフォルダにkeep.xmlという名前のxmlファイルを追加しました。

シングルサインビルドをさらに生成して、drawable-xhdpi-v4が表示されるapkアナライザツールをチェックインする前に、このテストのために削除したいmessenger_button_send_round_shadow.pngがあります。

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.Android.com/tools"
       tools:shrinkMode="strict"
       tools:discard="@drawable/com_facebook_button_icon_blue.png,
       @drawable/com_facebook_button_icon_white.png,
       @drawable/com_facebook_button_like_icon_selected.png,
       @drawable/messenger_button_send_round_shadow.png,
       @drawable/messenger_*"  />

messenger_ *を実行することによって、drawableフォルダー内のname messengerから始まるすべてのファイルが削除されるか、または他の方法で、削除する特定のファイルを定義します。

そのため、ライブラリからファイルを削除することができますので、そのドロウアブルがレイアウトなどで使用されている場合は、@ layout/layout nameでレイアウトを削除することもできます。

2
Parth Dave

良いツールを提案しているここに本当に素晴らしい答えがあります

ただし、png-drawable(または他の画像ファイル)を削除する場合は、すべてのdrawable-xxxxフォルダをプロジェクトから削除することも検討する必要があります。一時フォルダに移動してから、すべてを再構築し、ビルドメッセージリストを見て、どれが足りないかを確認します。

これは、あなたがどのリソースを効果的に使っているかの概要を知りたいなら、おそらく Android Iconics ライブラリの助けを借りて、アイコンフォントやsvgリソースに置き換えたい場合に特に役立ちます。

1
Daniel F

Android Assets Viewerは、.apkにパックされたグラフィック(ドロアブルとして)を視覚的に調べるのに役立つように設計されています(必要に応じて、resフォルダーのZipファイルをアップロードすることもできます)。

http://www.cellebellum.net/AndroidAssetsViewer/

そのため、未使用のリソースを削除するために、Lintチェックと連携して、あるべきものがすべて揃っていることを確認するのに役立ちます。それはまたあなたのドロアブルに関する他のいくつかの潜在的な問題を識別するのを助けます:間違ったバケツ、間違ったグラフィックなど。

0
straya

Android StudioでLintを実行して未使用のリソースをすべて見つけたら、[Inspection]タブからそれらのいずれかをクリックできます。それは問題とそれを修正するためのいくつかのオプションについてのある詳細を提供します。そのうちの1つが、「未使用のリソースをすべて削除」です。そのオプションを選択すると、未使用のリソースがすべて削除されます。

0
rohans310