¿Alguien tiene una línea para encontrar imágenes no utilizadas en un proyecto de Xcode? (Suponiendo que se hace referencia a todos los archivos por nombre en el código o en los archivos del proyecto, no hay nombres de archivo generados por código).
Estos archivos tienden a acumularse durante la vida de un proyecto y puede ser difícil saber si es seguro eliminar cualquier png.
Respuestas:
Para los archivos que no están incluidos en el proyecto, pero que se encuentran en la carpeta, puede presionar
cmd ⌘+ alt ⌥+A
y no aparecerán atenuados.
Para los archivos a los que no se hace referencia ni en xib ni en el código, algo como esto podría funcionar:
fuente
Esta es una solución más sólida: busca cualquier referencia al nombre de base en cualquier archivo de texto. Tenga en cuenta las soluciones anteriores que no incluyen archivos de guiones gráficos (completamente comprensible, no existían en ese momento).
Ack hace esto bastante rápido, pero hay algunas optimizaciones obvias que hacer si este script se ejecuta con frecuencia. Este código verifica cada nombre base dos veces si tiene activos tanto retina como no retina, por ejemplo.
fuente
brew install ack
.chmod a+x FindUnusedImages.sh
), luego ejecutarlo como cualquier otro programa de bash./FindUnusedImages.sh
result=`ack --ignore-file=match:/.\.pbxproj/ -i "$file"`
esto requiere ack 2.0 y superiorPruebe LSUnusedResources .
Está fuertemente influenciado por el Unused de jeffhodnett , pero honestamente Unused es muy lento y los resultados no son del todo correctos. Así que realicé una optimización del rendimiento, la velocidad de búsqueda es más rápida que Sin usar.
fuente
Probé la solución de Roman y agregué algunos ajustes para manejar imágenes de retina. Funciona bien, pero recuerde que los nombres de las imágenes se pueden generar mediante programación en el código, y este script enumeraría incorrectamente estas imágenes como no referenciadas. Por ejemplo, podrías tener
NSString *imageName = [NSString stringWithFormat:@"image_%d.png", 1];
Este script pensará incorrectamente
image_1.png
no está referenciado.Aquí está el script modificado:
fuente
Puede ser que puedas probar delgado , hace un trabajo decente.
actualización: Con la idea de emcmanus, seguí adelante y creé una pequeña utilidad sin ack solo para evitar configuraciones adicionales en una máquina.
https://github.com/arun80/xcodeutils
fuente
Solo este script funciona para mí, que incluso maneja el espacio en los nombres de archivo:
Editar
Actualizado para admitir
swift
archivos ycocoapod
. De forma predeterminada, excluye el directorio Pods y solo verifica los archivos del proyecto. Para ejecutar y verificar también la carpeta Pods, ejecute con--pod
attrbiute:/.finunusedimages.sh --pod
Aquí está el guión real:
fuente
Hice una modificación muy leve a la excelente respuesta proporcionada por @EdMcManus para manejar proyectos que utilizan catálogos de activos.
Realmente no escribo scripts de bash, así que si hay mejoras que hacer aquí (probablemente) hágamelo saber en los comentarios y lo actualizaré.
fuente
Puede hacer un script de shell con
grep
su código fuente y comparar las imágenes fundadas con la carpeta de su proyecto.Aquí el (los) hombre (s) para
GREP
yLS
Fácilmente puede recorrer todo su archivo fuente, guardar imágenes en una matriz o algo igual y usar
cat file.m | grep [-V] myImage.png
¡Con este truco, puedes buscar todas las imágenes en el código fuente de tu proyecto!
¡espero que esto ayude!
fuente
Escribí un guión de lua, no estoy seguro de poder compartirlo porque lo hice en el trabajo, pero funciona bien. Básicamente hace esto:
Paso uno: referencias de imágenes estáticas (lo fácil, cubierto por las otras respuestas)
Paso dos: referencias de imágenes dinámicas (la parte divertida)
Luego borra todo lo que no encontró en ninguna de las búsquedas.
El caso extremo es que los nombres de imágenes que provienen de un servidor no se manejan. Para manejar esto incluimos el código del servidor en esta búsqueda.
fuente
Puede probar la aplicación FauxPas para Xcode . Es realmente bueno para encontrar las imágenes faltantes y muchos otros problemas / violaciones relacionados con el proyecto Xcode.
fuente
Usando las otras respuestas, esta es un buen ejemplo de cómo ignorar imágenes en dos directorios y no buscar ocurrencias de las imágenes en los archivos pbxproj o xcassets (tenga cuidado con el ícono de la aplicación y las pantallas de presentación). Cambie el * en --ignore-dir = *. Xcassets para que coincida con su directorio:
fuente
Usé este marco: -
http://jeffhodnett.github.io/Unused/
¡Funciona muy bien! Solo 2 lugares en los que vi problemas son cuando los nombres de las imágenes son del servidor y cuando el nombre del activo de la imagen es diferente del nombre de la imagen dentro de la carpeta del activo ...
fuente
Utilice http://jeffhodnett.github.io/Unused/ para encontrar las imágenes no utilizadas.
fuente
He creado un script de Python para identificar las imágenes no utilizadas: 'unused_assets.py' @ gist . Se puede usar así:
Aquí hay algunas reglas para usar el script:
Limitaciones en la primera versión:
Intentaré mejorarlo con el tiempo, basándome en los comentarios; sin embargo, la primera versión debería ser buena para la mayoría.
A continuación encontrará el código. El código debe explicarse por sí mismo, ya que he agregado comentarios apropiados a cada paso importante .
fuente
También recomiendo probar FengNiao .
fuente