Eliminar todos los resources no utilizados de un proyecto de Android

Quiero eliminar todos los layouts no utilizados, cadenas, drawables, colors, etc. de mi directory de res de Android. ¿Hay alguna herramienta que me dé una list de files y puedo eliminar de mi repository y elementos dentro de files específicos (por ejemplo, inputs de cadenas no utilizadas) que ya no se utilizan?

Puede search fácilmente resources no utilizados de Android Studio. Simplemente presiona Ctrl + Alt + Shift + i y escribe " Recursos no utilizados " (sin comillas). Eso ejecutará la pelusa. Manera súper fácil de cómo ejecutar los commands de pelusa (y otras cosas de IDE).

O

En Android Studio -> Menú -> Refactorizar -> Eliminar resources no utilizados …

Seleccione los resources que desea eliminar. Puede excluir los resources que desea conservar haciendo clic derecho en el elemento de recurso.

Use Do Refactor para eliminar todos los resources a la vez.

Actualización: use cmd + Alt + Shift para mac

Desde ADT 16 puedes usar Android Lint . Es una herramienta realmente increíble.

Android Lint es una nueva herramienta para ADT 16 (y Tools 16) que escanea los orígenes de proyectos de Android en busca de posibles errores.

Aquí hay algunos ejemplos de los types de errores que busca:

  • Traducciones perdidas (y traducciones no utilizadas)
  • Problemas de performance del layout (todos los problemas que solía encontrar la herramienta antigua de layout, y más)
  • Recursos no utilizados
  • Tamaños de matriz incoherentes (cuando las matrices están definidas en múltiples configuraciones)
  • Problemas de accesibilidad e internationalization (cadenas codificadas, descripción de contenido faltante, etc.)
  • Problemas de icons (como densidades perdidas, icons duplicates, tamaños incorrectos, etc.)
  • Problemas de usabilidad (como no especificar un tipo de input en un campo de text)
  • Errores manifiestos y muchos más.

Sin embargo, tiene algunos problemas (no sé si ya están solucionados) y si desea eliminar cientos de resources supuestamente no utilizados, recomiendo comstackr el proyecto varias veces manualmente durante la eliminación de resources para asegurarse de que Lint no lo hizo. eliminar algo necesario.

Como el soporte para ADT en Eclipse ha finalizado, debemos usar Android Studio.

En Android Studio 2.0+, use Refactor > Remove Unused Resources...

enter image description here

El sistema de compilation de Gradle para Android admite "networkingucción de resources": la eliminación automática de los resources que no se utilizan, en time de compilation, en la aplicación empaquetada. Además de eliminar resources en su proyecto que en realidad no son necesarios durante el time de ejecución, esto también elimina los resources de las bibliotecas de las que depende si su aplicación no las necesita realmente.

Para habilitar esto, agregue la línea shrinkResources true en su file gradle.

  android { ... buildTypes { release { shrinkResources true } } } 

Consulte la documentation oficial aquí,

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

Abrimos una herramienta de código fuente que elimina todos los resources no utilizados en su proyecto de Android en function de la salida de pelusa. Se puede encontrar aquí: https://github.com/KeepSafe/android-resource-remover

Tenga cuidado si usa sabores múltiples cuando usa pelusa. La pelusa puede dar resources falsos no utilizados dependiendo del sabor que haya seleccionado.

Para verificar string.xml.

Es fácil (al less en mi versión de Eclipse)

En Eclipse para Android (tengo la versión v22.6.2-1085508)

  • Haga clic izquierdo sobre el nombre del proyecto en "Package explorer"
  • Seleccione "Herramientas de Android".
  • Seleccione "Ejecutar pelusa: comprobar si hay errores comunes".

Ahora cuando abras strings.xml, verás que la cadena no utilizada está resaltada.

Puede solucionar otros problemas potenciales.

Tal vez útil Andround Unused Resources es una aplicación Java que escaneará su proyecto en busca de resources no utilizados. Los resources no utilizados ocupan innecesariamente espacio, aumentan el time de construcción y saturan la list de autocompletado del IDE.

Para usarlo, asegúrese de que su directory de trabajo sea la raíz de su proyecto de Android y ejecute:

java -jar AndroidUnusedResources.jar

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

En Android Studio 2.0 y superior en el menu, select Refactorizar -> click Eliminar resources no utilizados …

(o)

acceso directo también disponible

Presione Ctlr + Alt + Mayús + i aparecerá un cuadro de dialog, escriba sin usar , encontrará varias opciones, select y elimine los resources no utilizados

Cuando definimos resources de contracción verdaderos en ese momento también podemos definir qué resources queremos conservar y cuáles no he agregado el file xml en la carpeta res / raw llamada keep.xml

antes de seguir generando una compilation firmada y comprobación en la herramienta apk analyzer que mostrará drawable-xhdpi-v4 tiene messenger_button_send_round_shadow.png que quiero eliminar para esta testing

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

al hacer messenger_ * se eliminarán todos los files que comiencen por el nombre del messenger en la carpeta dibujable o por otro lado tengo un file específico para ser eliminado

para que pueda eliminar los files de la biblioteca por sí mismo, también puede eliminar los layouts por @ layout / layout name si esa disposition ha sido utilizada por el layout y así ….

Atención a los desarrolladores de Android Wear : "Eliminar resources no utilizados" eliminará el file xml donde declaras el nombre de la capacidad (res / values ​​/ wear.xml) y el teléfono no podrá conectarse al reloj. Pasé horas intentando descubrir este error en mi aplicación.

Android Assets Viewer está diseñado para ayudar a inspeccionar visualmente los charts empaquetados (como obsoletos) dentro de su .apk (también puede cargar un file zip de su carpeta de res si lo prefiere):

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

Por lo tanto, para eliminar los resources no utilizados, esto podría funcionar bien en set con los controles de Lint para ayudar a asegurarse de que todo lo que debería estar allí sea. También lo ayuda a identificar algunos otros posibles problemas con sus productos descartables: cubo incorrecto, gráfico incorrecto, etc.

Después de ejecutar Lint en Android Studio y encontrar todos los resources no utilizados, puede hacer clic en uno de ellos desde la pestaña Inspección. Proporciona algunos detalles sobre el problema y algunas opciones para solucionarlo. Uno de ellos es Eliminar todos los resources no utilizados. Al seleccionar esa opción, se eliminan todos los resources no utilizados.

Aquí hay excelentes respuestas que sugieren buenas herramientas

Pero si tiene la intención de eliminar png-drawables (u otros files de image ), también debería considerar mover todas las carpetas drawable-xxxx de su proyecto a una carpeta temporal, luego rebuild todo y echar un vistazo a la compilation. list de posts que le dirá cuáles faltan.

Esto puede ser especialmente útil si desea get una visión general de los resources que está utilizando efectivamente y tal vez replacelos con una fuente de icono o resources de svg, posiblemente con la ayuda de la biblioteca de Android Iconics .

  • Gradle sinc falló con la extensión de kotlin. para cadena de input: "" en el module de file build.gradle (aplicación)
  • ERROR: error.NonExistentClass Kotlin en proyecto de Dagger de varios modules
  • Robolectric KeyStoreKeyGenerator
  • android.view.InflateException: file XML binary línea # 32: file XML binary línea # 32: class de inflado de error
  • NoSuchMethodError usando @Parcelize Annotation en Kotlin
  • error: Parceler: no se puede encontrar el generador de lectura / escritura para el tipo io.realm.RealmList
  • ¿Cómo eliminar inputs duplicadas de FragmentManager?
  • Firebase-Firestre no carga la información de 2 documentos simultáneamente
  • Android Kotlin cómo marcar la checkbox en la vista de list de opciones múltiples
  • No se puede get dokka para generar documentos de kotlin en el proyecto gradle / android
  • time de espera de connection: conectar consultar logging de IDE