web-dev-qa-db-fra.com

Supprimer toutes les ressources inutilisées d'un projet Android

Je souhaite supprimer toutes les mises en page, chaînes, tirables, couleurs, etc. inutilisées de mon répertoire Android. Existe-t-il des outils qui me donneront une liste de fichiers que je peux supprimer de mon référentiel et des éléments de fichiers spécifiques (par exemple, des entrées de chaîne inutilisées) qui ne sont plus utilisés?

332
Steve Prentice

Vous pouvez facilement rechercher des ressources inutilisées dans Android Studio. Appuyez simplement sur CtrlAltShifti et tapez "ressources non utilisées" (sans guillemets). Cela exécutera la charpie. Super facile moyen d'exécuter des commandes de charpie (et d'autres choses de l'IDE).

OR

Dans Menu Android Studio> Refactor> Supprimer les ressources inutilisées ...

Sélectionnez les ressources que vous souhaitez supprimer. Vous pouvez exclure les ressources que vous souhaitez conserver en cliquant avec le bouton droit de la souris sur l'élément de ressource.

Utilisez Do Refactor pour supprimer toutes les ressources en même temps.

Mise à jour: utiliser AltShifti pour Mac

635
bakua

Depuis ADT 16, vous pouvez utiliser Android Lint . C'est un outil vraiment incroyable.

Android Lint est un nouvel outil pour ADT 16 (et Tools 16) qui analyse Android sources de projets pour détecter d'éventuels bugs.

Voici quelques exemples des types d'erreur qu'il recherche:

  • Traductions manquantes (et traductions non utilisées)
  • Problèmes de performances de mise en page (tous les problèmes que l'ancien outil de mise en page utilisait pour trouver, et plus encore)
  • Ressources inutilisées
  • Tailles de tableau incohérentes (lorsque les tableaux sont définis dans plusieurs configurations)
  • Problèmes d'accessibilité et d'internationalisation (chaînes codées en dur, contenu manquantDescription, etc.)
  • Problèmes liés aux icônes (densités manquantes, icônes dupliquées, tailles incorrectes, etc.)
  • Problèmes d'utilisabilité (comme ne pas spécifier un type d'entrée dans un champ de texte)
  • Erreurs manifestes et beaucoup plus.

Cependant, il y a quelques problèmes (je ne sais pas s'ils sont déjà corrigés) et si vous souhaitez supprimer des centaines de ressources supposées inutilisées, je vous recommande de compiler manuellement le projet plusieurs fois lors de la suppression de ressource pour vous assurer que Lint ne l'utilise pas. enlever quelque chose de nécessaire.

95
Andrei Buneyeu

La prise en charge d'ADT dans Eclipse étant terminée, nous devons utiliser Android Studio.

Dans Android Studio 2.0+, utilisez Refactor > Remove Unused Resources...

enter image description here

37
dieter

Le système de construction Gradle pour Android prend en charge le "resserrement des ressources": suppression automatique des ressources inutilisées, au moment de la construction, dans l'application packagée. En plus de supprimer les ressources de votre projet qui ne sont pas réellement nécessaires au moment de l'exécution, cela supprime également les ressources des bibliothèques dont vous dépendez si elles ne sont pas réellement nécessaires pour votre application.

Pour l'activer, ajoutez la ligne shrinkResources true dans votre fichier Gradle.

   Android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}

Vérifiez la documentation officielle ici,

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

33
Prokash Sarkar

Nous ouvrons un outil qui élimine toutes les ressources inutilisées de votre projet Android en fonction du résultat de la charpie. Vous pouvez le trouver ici: https://github.com/KeepSafe/Android-resource-remover

16
philipp

Faites attention si vous utilisez plusieurs saveurs lorsque vous utilisez des peluches. La charpie peut donner de fausses ressources inutilisées en fonction de la saveur que vous avez sélectionnée.

13
MRodrigues

Dans Android Studio 2.0 et versions ultérieures du menu, sélectionnez Refactor -> cliquez sur Remove Unused Resources ...

(ou)

raccourci également disponible

Appuyez sur Ctrl + Alt + Maj + i une boîte de dialogue s’affiche, puis tapez non utilisé, vous trouverez le nombre d’options permettant de sélectionner et de supprimer les ressources inutilisées.

7
Ramesh R

Dans Android Studio,

Analyser -> Exécuter l'inspection par nom

(Raccourci pour Mac Maj + Commande + Option + i, Ctrl + Maj + A sous Windows/Linux).

Et tapez 'ressources inutilisées'.

De cette façon, vous pouvez supprimer les ressources, variables, symboles, localisation, bibliothèques inutilisés, etc. inutilisés.

Sélectionnez l'inspection souhaitée dans la liste, puis sélectionnez l'étendue de l'inspection -> OK enter image description here

5
Lins Louis

Attention Android Développeurs d'usure: "Supprimer les ressources inutilisées" supprimera le fichier xml où vous déclarez le nom de la fonctionnalité (res/values ​​/ wear.xml) et le téléphone ne le sera pas. capable de se connecter à la montre. J'ai passé des heures à essayer de résoudre ce problème dans mon application.

5
MScott

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)

  • Faites un clic gauche sur le nom du projet dans "Package Explorer"
  • Sélectionnez "Outils Android".
  • Sélectionnez "Run Lint: Vérifiez les erreurs courantes".

Maintenant, lorsque vous ouvrez strings.xml, vous verrez que les chaînes non utilisées sont mises en surbrillance.

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

4
Gabriel Klein

Peut-être utile Andround Unused Resources est une application Java qui analysera votre projet à la recherche de ressources inutilisées. Les ressources non utilisées occupent inutilement de l'espace, augmentent le temps de génération et encombrent la liste de complétion automatique de l'EDI.

Pour l'utiliser, assurez-vous que votre répertoire de travail est la racine de votre projet Android et exécutez:

Java -jar AndroidUnusedResources.jar

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

3
user1632014

Lorsque nous définissons des ressources réductibles, nous pouvons également définir les ressources que nous voulons conserver et celles que je n'ai pas ajoutées. J'ai ajouté un fichier xml dans le dossier res/raw nommé keep.xml.

avant d'aller plus loin, générez une version signée unique et vérifiez-la dans l'outil d'analyse apk qui montrera drawable-xhdpi-v4 a messenger_button_send_round_shadow.png que je souhaite supprimer pour cet essai.

<?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_*"  />

en faisant messenger_ * tous les fichiers commençant par le nom messenger dans un dossier pouvant être dessiné seront supprimés ou inversement si j’ai défini un fichier spécifique à supprimer

afin que vous puissiez supprimer les fichiers de la bibliothèque vous-même, vous pouvez également supprimer les mises en page par @ layout/nom de la mise en page si celle-ci a été utilisée par la mise en page, etc.

2
Parth Dave

Il y a vraiment d'excellentes réponses ici suggérant de bons outils

Mais si vous avez l'intention de supprimer png-drawables (ou d'autres fichiers image ), vous devez également envisager de déplacer tous les dossiers drawable-xxxx de votre projet. dans un dossier temporaire, puis reconstruisez tout, et jetez un coup d’œil à la liste de messages de construction qui vous indiquera ceux qui manquent.

Cela peut être particulièrement utile si vous souhaitez avoir une vue d'ensemble des ressources que vous utilisez efficacement et éventuellement les remplacer par une police de caractères ou des ressources svg, éventuellement à l'aide de la bibliothèque Android Iconics .

1
Daniel F

Android Assets Viewer est conçu pour vous aider à inspecter visuellement les graphiques emballés (sous forme de tirages) dans votre .apk (vous pouvez également simplement télécharger un fichier Zip de votre dossier res si vous préférez):

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

Donc, pour supprimer les ressources inutilisées, cela pourrait bien fonctionner en même temps que les vérifications de charpie pour vous assurer que tout ce qui devrait être disponible existe. Cela vous aide également à identifier quelques autres problèmes potentiels liés à votre dessin: mauvais seau, mauvais graphique, etc.

0
straya

Après avoir exécuté Lint dans Android Studio et trouvé toutes les ressources inutilisées, vous pouvez cliquer sur l'une d'entre elles à partir de l'onglet Inspection. Il fournit des détails sur le problème et quelques options pour le résoudre. L'un d'eux est Supprimer toutes les ressources non utilisées. La sélection de cette option supprime toutes les ressources inutilisées.

0
rohans310