J'ai un énorme projet Android avec de nombreuses chaînes déclarées strings.xml. Je voulais supprimer les chaînes inutilisées dans strings.xml.
Existe-t-il un moyen simple de le faire?
J'ai un énorme projet Android avec de nombreuses chaînes déclarées strings.xml. Je voulais supprimer les chaînes inutilisées dans strings.xml.
Existe-t-il un moyen simple de le faire?
Réponses:
Sur Android Studio :
Menu -> Analyser -> Exécuter l'inspection par nom -> Ressources inutilisées
Cochez la case Masque (s) de fichier et placez-la strings.xmldans le champ de texte.
tools:ignore="UnusedResources"
Voici une autre solution assez simple. Dans le menu Android Studio, accédez à
Restructurer> Retirer les ressources non utilisées ... .
Cliquez sur Aperçu pour voir quelles sont les ressources inutilisées et les supprimer de manière sélective.
Dans mon cas, "Exécuter l'inspection par nom" n'a pas fonctionné, malgré le fait que j'utilisais "Supprimer les ressources inutilisées".
Solution:
Je n'ai aucune idée de la raison pour laquelle "Supprimer les ressources inutilisées" fonctionne dans un sens mais pas dans l'autre.
Avec ADT 16, vous pouvez le faire aussi simplement que possible. Mettez à jour vers ADT 16 et utilisez Android Lint . C'est un outil vraiment incroyable. Il peut trouver toutes les ressources inutilisées (pas seulement les chaînes) et bien d'autres. Depuis 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 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.
Warning: The resource R.string.... appears to be unused [UnusedResources] [lint] <string name="...">some text</string>
Pour vérifier string.xml.
C'est facile (du moins dans ma version d'Eclipse)
Dans Eclipse pour Android (j'ai la version v22.6.2-1085508)
Maintenant, lorsque vous ouvrez strings.xml, vous verrez que la chaîne inutilisée est mise en surbrillance.
Vous pouvez résoudre d'autres problèmes potentiels.
Dans Android Studio Press
Ctlr + Alt + Maj + i
Sélectionnez -> Ressources inutilisées
Il vous montre des chaînes et des icônes inutilisées et inutilisées.
Merci Bon codage :)
C'est ainsi que je l'ai fait avec Android 3.3.
Archivez toutes les modifications non enregistrées dans votre référentiel.
Remarque: essayez de créer le projet. Si la compilation échoue, il est fort probable que ces strings.xml soient référencés à partir de certains fichiers XML de disposition / menu, qui eux-mêmes ne sont pas utilisés. Ainsi, ces fichiers XML de mise en page peuvent également être supprimés manuellement!
Construisez et exécutez. Tester!
Exécutez ce script à partir de la racine de votre projet.
pour le fichier de ressources dans `find res / values / *. xml`; faire
pour stringname dans `grep '. * / \ 1 / g'`; faire
count1 = `grep -rc" R.string. $ {stringname} "src | egrep -v ': 0 $' | wc -l`
count2 = `grep -rc" @string / $ {stringname} "res / layout | egrep -v ': 0 $' | wc -l`
count3 = `grep -rc" @string / $ {stringname} "res / menu | egrep -v ': 0 $' | wc -l`
count4 = `grep -rc" @string / $ {stringname} "AndroidManifest.xml | egrep -v '^ 0 $' | wc -l`
count5 = `grep -rc" @string / $ {stringname} "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: $ stringname
Fi
terminé
terminé
pour resourcename dans `find res / drawable * -type f -name '*. ???'`; faire
resource = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .drawable \. $ {ressource} "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 / $ {ressource} "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 $ resourcename
Fi
terminé
pour le nom de ressource dans `find res / layout / *. xml`; faire
resource = `echo $ resourcename | xargs basename | sed "s / ^ \ (. * \) \ .... $ / \ 1 / g" `
count1 = `grep -rc" R \ .layout \. $ {ressource} "src | egrep -v ': 0 $' | wc -l`
si [$ count1 -eq 0]; puis
echo $ resourcename
Fi
terminé
Cela me donne ce genre de sortie:
res / values / activity_strings.xml: activity_more res / values / activity_strings.xml: activity_as_reply_to res / values / db_strings.xml: sql_backlog_count res / values / db_strings.xml: sql_backlog_update_last_resend ...
Custom scope, en choisissantProduction classes->app->valuespour trouver des chaînes, des couleurs inutilisées ...