目录
概述
XcodeImageCleanTool是一款清理Xcode项目中未使用,重复和相似的图片资源的脚本工具,通过网页图形界面进行操作。
安装环境
推荐用Homebrew安装Python2和Python3,而不是直接使用系统自带的Python来运行。如何安装可以看这篇文章MAC OSX 正確地同時安裝 PYTHON 2.7 和 PYTHON3。终端输入python / pip是系统自带的,python2 / pip2是下载的Python2,python3 / pip3 是下载的Python3。
用setup.py安装依赖插件的时候可能会因为网络原因导致部分插件一直下载不下来,比如Pillow,这个时候可以先用pip安装相关依赖,或去官网下载相应的whl文件安装在本地,再运行setup.py。如果其他库也有这个问题都可以用这个办法解决。
安装说明
下载zip文件,解压进入dist文件夹,解压压缩文件,终端cd进入解压后的文件夹路径,输入命令python2 setup.py install
或python setup.py install
,成功后输入python2 -m xcode_imagecleantool
或python -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显示资源路径。
实现原理
- 首先查找路径下的所有后缀为 '.png', 'jpg', 'jpeg', 'gif' 的图片资源,忽略AppIcon和LaunchImage等文件夹下的图片。
- 计算图片的dHash值。(dHash的相关文章可以参考相似图片检测:感知哈希算法之dHash的Python实现)
- 具有相同dHash值,并且名称相同的图片为重复图片。
- 先把@2x,@3x的图片合成为一张图片(同名且路径相同),之后如果存在dHash值相同的图片,则为相似图片。
- 遍历工程下所有后缀为'.h', '.m', '.swift', '.mm', '.cpp', '.xib', '.storyboard', '.plist', '.html', '.css'的文件,搜索是否有
"图片名称"
或"图片名称.后缀"
的代码,如果有则图片已使用。
其他
GitHub地址:https://github.com/peace-v/XcodeImageCleanTool。
如果有小伙伴安装使用中遇到了问题,能解决优化现有的问题或代码,或者有好的建议等,都可以在文章下面留言。
网友评论