查找iOS项目不用的图片资源

作用

查找Xcode iOS APP项目xcassets中不再使用的图片

使用

  1. unusedimages.sh复制到Images.xcassets文件夹内,
  2. 切换当前目录为Images.xcassets
  3. 运行./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<[email protected]>
##查找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]]
    

你可能感兴趣的:(查找iOS项目不用的图片资源)