作用
查找Xcode iOS APP项目xcassets中不再使用的图片
使用
- 把
unusedimages.sh
复制到Images.xcassets文件夹内, - 切换当前目录为Images.xcassets
- 运行./unusedimages.sh
➜ Images.xcassets git:(develop) ✗ ./unusedimages.sh
运行脚本后会生成unusedImages.txt文件,跟unusedimages.sh在同级的目录
这个脚本依赖于ag命令,需要先安装
思路
1. 列举出Assets.xcassets目录下所有的*.imageset
2. 对上一步找出的每一个*.imageset[图片],都在所有工程文件中查找这个图片名字的字符串
3. 如果所有工程文件中都不包含图片名字的字符串,则表示这个图片没有被使用
4. 对拼接图片名字,没有处于,只给出警告
unusedimages.sh内容
#!/bin/bash
##author: zhoujie<13456774460@139.com>
##查找xcdoe iOS APP项目xcassets中不再使用的图片
##这个sh依赖于ag命令:https://github.com/ggreer/the_silver_searcher
#ls
#-R Recursively list subdirectories encountered
#-l List in long format.
#ls -R -l | grep "^d"
#过滤出目录文件
#grep "\.imageset"
#在目录文件中过滤出.imageset目录
#结果:drwxr-xr-x@ 6 zhoujie staff 204 Jul 11 08:50 personal_cell_icon_ticket.imageset
#grep -o ":\d\d .\+\.imageset"
#过度截取出图片文件名
#结果::50 personal_cell_icon_ticket.imageset
#sed -n -e "s/:[0-9][0-9] //;s/\.imageset$//gp"
#截取出图片文件名
#结果:personal_cell_icon_ticket
images=$( ls -R -l | grep "^d" | grep "\.imageset" | grep -o ":\d\d .\+\.imageset" | sed -n -e "s/:[0-9][0-9] //;s/\.imageset$//gp" )
##清空文件
unusedImages=unusedImages.txt
> $unusedImages
##对误中代码块进行处理
#########################################################
printf "请注意误查找:[UIImage imageNamed:[NSString stringWithFormat:\n" >> $unusedImages
time ag -o 'imageNamed.+Format.+"' './' | sed -n -E 's/(.*@")(.*)(")/\2/p' | sort -u >> $unusedImages
printf "\n\n">> $unusedImages
#########################################################
#ag
#A code-searching tool similar to ack, but faster. http://geoff.greer.fm/ag/
#https://github.com/ggreer/the_silver_searcher
#--case-sensitive Match case sensitively
#---ignore PATTERN Ignore files/directories matching PATTERN
# (literal file/directory names also allowed)
#--ignore-dir NAME Alias for --ignore for compatibility with ack.
time for i in $images; do
ag -Q --case-sensitive --ignore $unusedImages --ignore-dir "*.xcassets" "$i" './'
if [[ $? -ne 0 ]]; then
echo "$i" >> $unusedImages
fi
done
##误中
##代码:night_fonts_%@_normal, night_fonts_%@_click, night_fonts_%@_down
# [UIImage imageNamed:[NSString stringWithFormat:@"night_fonts_%@_normal", fontID]
##代码:load_ic_loading_%ld
# [UIImage imageNamed:[NSString stringWithFormat:@"load_ic_loading_%ld",(unsigned long)i]]