web-dev-qa-db-ja.com

Android Studio?

次のような未使用の文字列リソースが見つかりました。

<string name="obsoletestring">my name is null!</string>

ただし、数十のファイル、異なる言語、異なるstrings.xmlファイルはvaluesvalues-afvalues-beなどのフォルダ。

Android Studioで1つずつ手動で変更する以外に、これを行う方法を知らない何かを逃したに違いありません。

tl; dr すべての構成の未使用の文字列リソースを削除するにはどうすればよいですか?

30

insideAndroidStudio。Lintのチェック後、右側にオプションが表示されます未使用のリソースをすべて削除します

enter image description here

すべてのロケールファイルから単一の文字列リソースを削除するには、「翻訳エディター」を使用できます。 1. resディレクトリを右クリックして、翻訳エディターを開きます。 2.「すべてのキーを表示」セレクターを選択し、「テキストでフィルター」を選択します。削除するリソースの名前を指定します。 3.リソースを選択し、「-」ボタンをクリックします

21
chrisonline

未使用のリソースをすべて識別するには:

  • メニューを開く>分析>名前で検査を実行...
  • 「未使用のリソース」を選択します
  • [プロジェクト全体]がオンになっていることを確認して、[OK]を押します。
  • リストを見てください。 [再実行]ボタンを使用して、いつでも検査を再実行できます。

Android Studio(v 1.0)ですべてのロケールのリソース文字列を削除する簡単な方法はありません。ただし、ファイル内で検索および置換できます。幸いなことに、翻訳ファイルは単一のほとんどの場合、このように動作します。

In Android Studio:

  • ソース管理で保留中の変更なしで開始します(これがうまくいかない場合、チェックし、バックアウトするのをより簡単にします)。
  • メニューを開く>編集>検索>パスで置換...
  • 検索するテキスト:.*name="obsoletestring".*\n
  • 置換後:(空)
  • 正規表現を確認する
  • [検索]ボタンを押します。
  • 結果を調べます。よければ、「すべてのファイル」ボタンを押します。
  • おそらくres/values/strings.xmlのコメントを手動で削除する必要があります。
  • プロジェクトがまだビルドされていることを確認してください。
  • ソース管理内のプロジェクトの差分を見て、変更が本当に意図したものであることを確認してください...
27
mbells

IDEがサポートされるまで、これらの行に沿った何かが機能します:

find -name strings.xml|xargs -rd\\n  sed -ri '/"string_to_delete"/d'
5

Android Studio 2.3では、未使用のリソースをすべて削除できます。

  • Res/values /ディレクトリにある* .xmlを開きます
  • アイテムの名前を右クリックします
  • Refactor -> Remove Unused Resources...
3
stone
  1. メニュー->分析->名前による検査の実行->未使用のリソース
  2. 結果から、未使用のすべての文字列リソースを選択します。

    • 強調表示された行を右クリックし、「@ SuppressLint(Java)またはtools:ignore(XML)で非表示」を選択します。これにより、すべての文字列ファイルのすべての文字列に属性tools:ignoreが追加されます。
  3. メニュー->検索->パスで置換

    • 検索するテキスト:^。*?tools:ignore = "UnusedResources"。*?\ n
    • ティック正規表現ボックス
    • スコープを使用:カスタム
      • カスタムスコープエディターを開き、パターンを追加します:file [app]:src/main/res // strings.xml
    • 見つける
    • 等。
2
passerby

残念ながら、手動で行う必要があります。

これを確認してください answerEclipseを使用してそれらを取り除くために正確に何をすべきかを理解してください

Android Studioを使用している場合は、アプリケーション全体でそれらを見つけて、手動で削除することもできます。これを確認してください answer

2
Sami Eltamawy

実際、Android Lintは未使用のリソースについて報告する必要がありますが、 this Niceプラグインで試すこともできます。

0
azurh

REMOVE UNUSED RESOURCESコマンドは、プログラムでアクセスされたリソースを使用済みリソース(getIdentifier(..)など)として認識できないことに注意してください。したがって、その方法でリソースにアクセスする場合、そのコマンドを使用することは非常に危険です!!

0
Hanoch Moreno