有没有人可以在Xcode项目中找到未使用的图像?(假设在代码或项目文件中按名称引用所有文件-没有代码生成的文件名。)
这些文件往往会在项目的整个生命周期中积累起来,很难判断删除任何给定的png是否安全。
发布于 2015-09-02 14:16:35
它受到jeffhodnett的Unused的严重影响,但老实说,未使用的速度非常慢,结果并不完全正确。所以我做了一些性能优化,搜索速度比未使用时要快得多。
发布于 2011-10-12 04:17:38
我尝试了罗曼的解决方案,并添加了一些微调来处理视网膜图像。它工作得很好,但请记住,图像名称可以在代码中以编程方式生成,并且此脚本会错误地将这些图像列为未引用。例如,您可能有
NSString *imageName = [NSString stringWithFormat:@"image_%d.png", 1];
此脚本将错误地认为image_1.png
未被引用。
下面是修改后的脚本:
#!/bin/sh
PROJ=`find . -name '*.xib' -o -name '*.[mh]' -o -name '*.storyboard' -o -name '*.mm'`
for png in `find . -name '*.png'`
do
name=`basename -s .png $png`
name=`basename -s @2x $name`
if ! grep -qhs "$name" "$PROJ"; then
echo "$png"
fi
done
发布于 2015-06-02 08:38:33
只有这个脚本对我有效,它甚至可以处理文件名中的空格:
编辑
已更新以支持swift
文件和cocoapod
。默认情况下,它不包括Pods目录,只检查项目文件。要同时运行以检查Pod文件夹,请使用--pod
属性运行:
/.finunusedimages.sh --pod
下面是实际的脚本:
#!/bin/sh
#varables
baseCmd="find ."
attrs="-name '*.xib' -o -name '*.[mh]' -o -name '*.storyboard' -o -name '*.mm' -o -name '*.swift'"
excudePodFiles="-not \( -path */Pods/* -prune \)"
imgPathes="find . -iname '*.png' -print0"
#finalize commands
if [ "$1" != "--pod" ]; then
echo "Pod files excluded"
attrs="$excudePodFiles $attrs"
imgPathes="find . $excudePodFiles -iname '*.png' -print0"
fi
#select project files to check
projFiles=`eval "$baseCmd $attrs"`
echo "Looking for in files: $projFiles"
#check images
eval "$imgPathes" | while read -d $'\0' png
do
name=`basename -s .png "$png"`
name=`basename -s @2x $name`
name=`basename -s @3x $name`
if grep -qhs "$name" $projFiles; then
echo "(used - $png)"
else
echo "!!!UNUSED - $png"
fi
done
https://stackoverflow.com/questions/6113243
复制相似问题