Existe-t-il un moyen simple de trouver des chaînes inutilisées dans un projet Android?

J’ai un énorme projet Android avec de nombreuses chaînes déclarées dans ssortingngs.xml . Je voulais supprimer les chaînes inutilisées dans ssortingngs.xml .

Y a-t-il un moyen facile de le faire?

Sur Android Studio :

Menu -> Analyser -> Exécuter l’inspection par nom -> Ressources inutilisées

Cochez la case Masque (s) de ssortingngs.xml et placez ssortingngs.xml dans le champ de texte.

Avec ADT 16, vous pouvez le faire aussi simplement que possible. Mettre à jour vers ADT 16 et utiliser Android Lint . C’est un outil vraiment incroyable. Il peut trouver toutes les ressources inutilisées (pas seulement les chaînes) et beaucoup plus. De son site officiel:

 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 ssortingngs, 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. 

Dans mon cas, “Run Inspection by Name” n’a pas fonctionné, malgré le fait que j’utilisais “Supprimer les ressources inutilisées”.

Solution:

  1. Ouvrir ssortingngs.xml
  2. Clic secondaire
  3. Refactor -> Supprimer les ressources non utilisées

Je n’ai aucune idée pourquoi “Supprimer les ressources inutilisées” fonctionne dans un sens mais pas dans l’autre.

Voici une autre solution assez facile. Dans le menu Android Studio, allez à

Refactor> Supprimer les ressources non utilisées ….

entrer la description de l'image ici

Cliquez sur Aperçu pour voir quelles sont les ressources non utilisées et supprimez-les de manière sélective.

Jetez un oeil à ma question: Découvrez si la ressource est utilisée

Comme personne ne répondait vraiment, j’ai programmé un script pour rechercher les ressources inutilisées, y compris les chaînes.

J’espère que ça vous aide.

Reportez-vous au lien: http://code.google.com/p/android-unused-resources/ . il a un outil AndroidUnusedResources.jar. lancez ceci et récupérez vos chaînes inutilisées ou tout autre ressource.

  • Profonds

Pour vérifier ssortingng.xml.

C’est facile (du moins dans ma version d’Eclipse)

Dans Eclipse pour Android (j’ai la version v22.6.2-1085508)

  • Faites un clic droit sur le nom du projet dans “Explorateur de paquets”
  • Sélectionnez “Outils Android”.
  • Sélectionnez “Run Lint: Vérifiez les erreurs communes”.

Maintenant, lorsque vous ouvrez ssortingngs.xml, vous verrez que la chaîne inutilisée est mise en évidence.

Vous pouvez résoudre d’autres problèmes potentiels.

Dans Android Studio Press

Ctlr + Alt + Shift + i

Sélectionner -> Ressources non utilisées
Il vous montre les chaînes et les icons inutilisées non utilisées.

Merci Heureux codage 🙂

Exécutez ce script à partir de la racine de votre projet.

 pour le fichier de ressources dans `find res / values ​​/ *. xml`;  faire
   pour ssortingngname dans `grep '. * / \ 1 / g'`;  faire
     count1 = `grep -rc" R.ssortingng. $ {ssortingngname} "src |  egrep -v ': 0 $' |  wc -l`
     count2 = `grep -rc" @ssortingng / $ {ssortingngname} "res / layout |  egrep -v ': 0 $' |  wc -l`
     count3 = `grep -rc" @ssortingng / $ {ssortingngname} "res / menu |  egrep -v ': 0 $' |  wc -l`
     count4 = `grep -rc" @ssortingng / $ {ssortingngname} "AndroidManifest.xml |  egrep -v '^ 0 $' |  wc -l`
     count5 = `grep -rc" @ssortingng / $ {ssortingngname} "res / xml |  egrep -v ': 0 $' |  wc -l`
     if [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0];  puis
       echo $ resourcefile: $ ssortingngname
     Fi
   terminé
 terminé

 pour le nom de ressource dans `find res / drawable * -type f -name '*. ???'`;  faire
   resource = `echo $ nom de ressource |  xargs nom de base |  sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
   count1 = `grep -rc" R \ .drawable \. $ {resource} "src |  egrep -v ': 0 $' |  wc -l`
   count2 = `grep -rc" @drawable / $ {resource} "res / layout |  egrep -v ': 0 $' |  wc -l`
   count3 = `grep -rc" @drawable / $ {resource} "res / drawable * / *. xml |  egrep -v ': 0 $' |  wc -l`
   count4 = `grep -rc" @drawable / $ {resource} "res / menu |  egrep -v ': 0 $' |  wc -l`
   count5 = `grep -rc" @drawable / $ {resource} "AndroidManifest.xml |  egrep -v '^ 0 $' |  wc -l`
   if [$ count1 -eq 0 -a $ count2 -eq 0 -a $ count3 -eq 0 -a $ count4 -eq 0 -a $ count5 -eq 0];  puis
       echo $ nom_source
   Fi
 terminé

 pour le nom de ressource dans `find res / layout / *. xml`;  faire
   resource = `echo $ nom de ressource |  xargs nom de base |  sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
   count1 = `grep -rc" R \ .layout \. $ {resource} "src |  egrep -v ': 0 $' |  wc -l`
   if [$ count1 -eq 0];  puis
       echo $ nom_source
   Fi
 terminé

Cela me donne ce genre de sortie:

 res / values ​​/ activity_ssortingngs.xml: activity_more
 res / values ​​/ activity_ssortingngs.xml: activity_as_reply_to
 res / values ​​/ db_ssortingngs.xml: sql_backlog_count
 res / values ​​/ db_ssortingngs.xml: sql_backlog_update_last_resend
 ...

Pour la traduction manquante uniquement:

En utilisant InteliJ, cliquez sur la barre de votre InteliJ: “Analyze”> “Run Inspection by Name”> Tapez: Traduction incomplète