Índice
Trabajando en el proyecto SWADroid | (Fuente en Github), y tras pasar la herramienta Lint
, me encontré con cientos de recursos sin usar, que debía eliminar a mano. Pensé que debía existir alguna herramienta que permitiera automatizar el proceso, y de hecho, exíste, Android Resource Remover. Hoy veremos cómo usar ésta herramienta para eliminar recursos sin usar en Android.
El problema
A medida que un proyecto va creciendo, se usan más y más recursos. Con el paso del tiempo puede que muchos dejen de usarse al ser reemplazados por otros. En el caso de SWADRoid había cientos. La manera de resolverlos fue usando la herramienta Android Resource Remover cuya instalación procederemos a explicar ahora.
Instalar Android Resource Remover
Bastante sencillo:
pip install android-resource-remover
Ejecutar Android Resource Remover
Bastante sencillo también, basta con ejecutar
android-resource-remover
en el directorio del proyecto a limpiar.
Problemas en la instalación
Si por algún motivo, el proceso de instalación no finaliza correctamente, es posible que falten los siguientes paquetes en el sistema.
sudo apt-get install libxml2-dev libxslt1-dev
En mi caso tuve que instalarlos.
También es posible que sea necesario actualizar la librería xml con
easy_install --upgrade lxml
Uso avanzado
En mi caso, me encontré con problemas al usar el programa sin argumentos. Concretamente los pasos que seguí fueron:
lint --xml lint-result.xml -Wall --quiet --showall .
El significado de los parámetros es:
--xml lint-result.xml
Guarda el resultado en el fichero indicado.-Wall
Comprueba todos Warnings, incluidos las desactivadas por defecto.--quiet
No muestra el progreso.--showall
No trunca mensajes demasiado largos..
directorio sobre el que ejecutarlint
.
Una vez finalizado el análisis, es posible eliminar los recursos sin usar usando Android Resource Remover con los siguientes parámetros:
android-resource-remover --xml lint-result.xml
Eliminar Identificadores sin usar
Aunque Android Resource Remover por defecto eliminar únicamente recursos de tipo imágenes, ficheros xml etc, es posible hacer una ligera modificación al código para que elimine los identificadores sin usar. La línea a modificar es root.findall('.//issue[@id="UnusedResources"]')
, basta modificarla a root.findall('.//issue[@id="UnusedIDs"]')
y ejecutar de nuevo los pasos mencionados arriba.
Resultado
Tras pasar Android Resource Remover, SWADroid paso a ocupar 1,5Mb frente a las 2,3Mb previas a la eliminación de los recursos sin usar.
Referencias
- Proyecto en Github »» github.com/KeepSafe/android-resource-remover
- Remove unused Android resources to reduce APK size »» keepsafe-engineering.com
¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.