美文网首页
查找iOS项目不用的图片资源

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

作者: 一吻江山 | 来源:发表于2016-10-17 10:28 被阅读67次

    作用

    查找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<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]]
        
    

    相关文章

      网友评论

          本文标题:查找iOS项目不用的图片资源

          本文链接:https://www.haomeiwen.com/subject/vspayttx.html