web-dev-qa-db-fra.com

Existe-t-il un outil pour trouver les ressources inutilisées dans un projet Android?

Je voudrais trouver toutes les ressources inutilisées dans mon Android - cela inclut les chaînes, les identifiants, les dessinables, les entiers, etc.

Existe-t-il actuellement un outil pour ce faire (de préférence pour Eclipse)?

43
Joseph Earl

Si vous utilisez IntelliJ, qui prend en charge Android support dans l'édition communautaire gratuite, vous pouvez le faire en ouvrant le fichier R.Java généré (gen/R.Java). Les ressources inutilisées seront marquées avec un avertissement pour ne pas être référencé n'importe où dans votre projet.

Je serais surpris si Eclipse ne faisait pas la même chose.

18
adam

Mettez à jour vers ADT 16 et utilisez Android Lint . C'est vraiment un outil incroyable.

Android Lint est un nouvel outil pour ADT 16 (et Tools 16) qui analyse les sources de projet Android Android pour les bogues potentiels).

Here are some examples of the types of errors that it looks for:

- Missing translations (and unused translations)
- Layout performance problems (all the issues the old layoutopt tool used to find, and more)
- Unused resources
- Inconsistent array sizes (when arrays are defined in multiple configurations)
- Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc)
- Icon problems (like missing densities, duplicate icons, wrong sizes, etc)
- Usability problems (like not specifying an input type on a text field)
- Manifest errors
and many more.
34
Andrei Buneyeu

Une note amicale: l'idée IntelliJ fonctionne UNIQUEMENT pour les ressources qui ne sont pas référencées dans le code Java. Donc, si vous avez 1 500 ressources et seulement 20 sont référencées directement à partir de votre code Java, vous vous retrouvez avec 1480 avertissements inutilisés dans ce fichier.

Je constate que des éléments marqués comme inutilisés que je peux clairement voir sont utilisés dans diverses dispositions. Alors gardez cela à l'esprit ... ne vous lancez pas dans une folie effaçante.

34
copolii

Andrei Buneyeu a raison de Android Lint est le chemin à parcourir. Pour répondre spécifiquement à la question de quiconque regarde, la commande est la suivante:

lint --check UnusedResources <path to project>

Il y a beaucoup plus d'options dans les peluches que vous pouvez voir avec lint --list.

19
karl

Les ressources inutilisées Android est un outil Java qui détectera les ressources inutilisées et vous indiquera où elles se trouvent. Il traite Java et les fichiers XML, donc il évite le problème dans la réponse acceptée.

Ce n'est pas parfait, mais tant que vous ne chargez pas dynamiquement les ressources ( getIdentifier (Java.lang.String, Java.lang.String, Java.lang.String)), Il ne devrait pas vous dire de supprimer ceux qui sont réellement utilisés (bien que vous obtiendrez une erreur de compilation même si cela se produit).

5
Scott Kennedy