/XcodeImageCleanTool

清理iOS工程中重复,相似,未使用图片的Python脚本

Primary LanguagePython

XcodeImageCleanTool

目录

概述

XcodeImageCleanTool是一款清理iOS项目中未使用,重复和相似的图片资源的脚本工具,通过网页图形界面进行操作。

安装环境

推荐用Homebrew安装Python2和Python3,而不是直接使用系统自带的Python来运行。如何安装可以看这篇文章https://stringpiggy.hpd.io/mac-osx-python3-dual-install/。终端输入python / pip是系统自带的,python2 / pip2是下载的Python2,python3 / pip3 是下载的Python3。

用setup.py安装依赖插件的时候可能会因为网络原因导致部分插件一直下载不下来,比如Pillow,这个时候可以先用pip安装相关依赖,或去官网下载相应的whl文件安装在本地,再运行setup.py。如果其他库也有这个问题都可以用这个办法解决。

安装说明

下载zip文件,解压进入dist文件夹,解压压缩文件,终端cd进入解压后的文件夹路径,输入命令python2 setup.py installpython setup.py install,成功后输入python2 -m xcode_imagecleantoolpython -m xcode_imagecleantool即可运行。

浏览器输入网址http://127.0.0.1:5000/即可进入页面(CTRL+C退出)。如果显示socket.error: [Errno 48] Address already in use则是5000端口被占用,需要先中止5000端口的进程,再运行脚本即可。

使用说明

项目的绝对路径(必填项):需要搜索的工程所在的路径,如下图。路径无空格,下同。

图片资源路径(选填):如果只需要搜索某个具体路径下的图片资源在整个工程中的应用,而不是全工程的图片,可以填写需要搜索的图片资源路径。

忽略路径(选填):不想把工程中引入的第三方库等的图片资源也纳入搜索范围的话,可以填写忽略路径。可添加多个,用英文逗号隔开。

搜索完成后会显示相应的图片及路径。路径可能会有多个,因为在查找相似图片时会把@2x,@3x等默认为一张。点击路径可以直接用预览打开查看。如果图片没有显示,可能因为是白色,与背景色重叠,无法分辨。

可以删除选中图片,导出搜索结果results.txt到dist/XcodeImageCleanTool-1.0/xcode_imagecleantool路径下。

注意事项

  • 如果没有把framework,.a库或Bundle的路径设置为忽略路径,搜索结果可能不准确,因为能拿到它们的图片资源,但是只暴露了头文件,所以无法判断图片是否有使用过。
  • 搜索未使用图片的时间会较长,请耐心等待。
  • 删除图片要确认无误之后再删除。因为有的情况是搜索不到的,比如图片名称不是写死的字符串而是动态拼接的。
  • 使用删除功能删除图片后,如果图片是Assets.xcassets里的,会有一个空白的占位符停留在工程里,需要手动删除。

已知问题

  • 用safari打开网页时,按钮有时需要点击两次才能执行相关动作。

待优化

  • 提升搜索效率。
  • 点击图片地址直接进入Finder显示资源路径。

实现原理

  1. 首先查找路径下的所有后缀为 '.png', 'jpg', 'jpeg', 'gif' 的图片资源。
  2. 计算图片的dHash值。(dHash的相关文章可以参考http://www.jianshu.com/writer#/notebooks/422841/notes/16529854/preview
  3. 具有相同dHash值,并且名称相同的图片为重复图片。
  4. 先把@2x,@3x的图片合成为一张图片(同名且路径相同),之后如果存在dHash值相同的图片,则为相似图片。
  5. 遍历工程下所有后缀为'.h', '.m', '.swift', '.mm', '.cpp', '.xib', '.storyboard', '.plist', '.html', '.css'的文件,搜索是否有"图片名称""图片名称.后缀"的代码,如果有则图片已使用。

其他

简书文章地址:http://www.jianshu.com/p/485ef4fecaec

如果有小伙伴安装使用中遇到了问题,能解决优化现有的问题或代码,或者有好的建议等,都可以通过邮件联系molayyu@gmail.com