脚本使用
FindUnUseResource.py
脚本地址
python3 FindUnUseResource.py -f .png,.jpg,.jpeg,.mp3,.m4a -p /Users/a58/Desktop/HaoJie -e .bundle,Assets.xcassets,Pods
参数说明:
-f 查找的资源类型,多个用逗号隔开
-p 查找的项目路径
-e 排除哪些路径,多个用逗号隔开
检测结果:
脚本原理
我们以图片资源为例:
1、查找项目中所有图片名称
一般我们的项目中的图片存储地大概这么几个地方
bundle 、 主项目中 、 Assets.xcassets
脚本主要是查找Assets.xcassets和主项目中,忽略bundle中的图片名称<因为bundle中的图片一般是别人封装好的,可能配合framework等用,你不知道里面的图片有没有真正的被用到>
1.1、获取主项目中图片的名字
主项目中的图片名字比较好获取,遍历项目中除了Assets.xcassets,Pods,.bundle的文件即可,查找到扩展名为png、jpg、jepg等文件保存下来即可
ProjectPath/Resource/tabSelected.png --> tabSelected
1.2、Assets.xcassets中图片名称的获取
Assets.xcassets中的图片图片获取需要注意,实际文件图片名和Assets.xcassets中名字可能不一样,图片资源加到Assets.xcassets是可以修改名称的,实际使用的是Assets.xcassets中的名称
/Users/a58/Desktop/smallDemo/ImagesDemo001/ImagesDemo001/Assets.xcassets/weibo.imageset --> weibo
2、遍历项目中的文件,搜索有没有出现图片名称
通过观察,我们可以看到,图片的名称都是以字符串的形式进行使用的
所以我们拿着 "imageName去项目.h、.m、.xib、.storyboard、.swift中去找,匹配到相关的字符串我们认为该图片用到了
除非碰到一个字符串开头和图片名称一样,检测不出来,其他的情况应该很少
如果检测不到该字符串,那么认为该图片没有被用到
其他的资源类似