iOS强迫症的福音--优雅的删除项目中无用的图片资源

在这里插入图片描述
随着产品的更迭,工程中的图片资源也在不断的更新换代。那么你是不是曾今为项目中的无用图片过多而脑阔疼?为一个个查找,删除这些图片而奔溃?你是不是有仰天长啸:神啊,告诉我如何优(yi)雅(jian)的删除项目中无用的资源吧?
现在就让我来告诉你–FengNiao–一个删除Xcode工程中无用图片资源的神器!

啥是fengniao

FengNiao一个命令行工具,由iOS界的大神onevcat喵神使用swift开发并开源,github地址在这:https://github.com/onevcat/FengNiao

更厉害的是,喵神开发第一版是code online的形式完成的。啥意思呢?喵神当年开了直播,现场开发这个工具,观众可以直接看到开发的整个过程,中间喵神也会一直讲解思路和开发技巧,当时没看到直播,感觉损失了一个亿,不过好在这个工具还一直在维护,造福着更多人。

好了,闲话不多说了,看看到底怎么使用这个工具吧!

咋安装

使用源码安装:
打开命令行,执行以下操作

> git clone https://github.com/onevcat/FengNiao.git
> cd FengNiao
> ./install.sh

等待一会之后,fengniao会自动编译安装到*/usr/local/bin*目录下,OK,安装完毕,是不是很简单。

咋使用

一、命令行操作
1.cd到你项目所在的文件目录
2.直接使用 fengniao 命令
在这里插入图片描述
如上图,fengniao会自动查找未使用的图片资源,并提供list(列表查看)、delete(直接删除)、ignore(忽略这些文件)三个命令,还可以使用fengniao -h 查看所有支持的命令

> fengniao --help

  -p, --project:
      Root path of your Xcode project. Default is current folder.
  --force:
      Delete the found unused files without asking.
  -e, --exclude:
      Exclude paths from search.
  -r, --resource-extensions:
      Resource file extensions need to be searched. Default is 'imageset jpg png gif pdf'
  -f, --file-extensions:
      In which types of files we should search for resource usage. Default is 'm mm swift xib storyboard'
  --version:
      Print version.
  -h, --help:
      Print this help message.

还有一种更常进行的操作,只查找当前工程中的图片,而不包括Pod和Carthage中的资源:

> fengniao --project . --exclude Carthage Pods

二、加入到Xcode的编译过程
如果你想在每次编译的时候都检查一下是否有无用图片资源,并删除它们的话,也可以做到
在这里插入图片描述
需要在Build Phases中添加一项Run Script,脚本中添加如下内容:

fengniao --exclude Carthage Pods --force

注意:这个Run Script需要添加在"Copy Bundle Resources"前面,不然项目中的图片已经被编译进项目,不能再删除了。

啥原理

其实fengniao的原理还是比较简单的
1.在项目中的[“imageset”, “launchimage”, “appiconset”, "bundle”]这些文件夹下,查找[“imageset”, “jpg”, “png”, “gif”, “pdf”]这些类型的文件。
2.在项目中后缀为[“m”, “mm”, “swift”, “xib”, “storyboard”, “plist”]这些的文件中,查找第一步查找到的文件名,字符串匹配。
3.得到所有未使用的资源文件名,done

注意:如果项目中有gif动画这样的,多张图片命名基本类似,只是按顺序编号,例如:image1.png, image2.png,image3.png,然后在使用的地方通过for循环取图片的话,需要注意,这样的图片虽然确实在使用,但根据上面的原理我们知道,fengniao不能检测出来这些图片正在被使用,存在误删的可能,所以一定要检查哦!

小伙伴们,还在等什么,fengniao赶快用起来,给你的APP瘦瘦身吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NSString类是iOS开发非常常用的字符串类,其substringFromIndex、substringWithRange和substringToIndex是NSString类的三个常用方法,用于截取字符串的一部分。下面分别介绍它们的使用方法。 1. substringFromIndex方法 该方法用于截取字符串从指定位置到字符串结尾的所有字符,返回截取后的字符串。它的方法签名如下: ``` - (NSString *)substringFromIndex:(NSUInteger)from; ``` 其,from是一个NSUInteger类型的参数,表示要截取的起始位置,从0开始计数。 示例代码: ``` NSString *str = @"Hello World"; NSString *subStr = [str substringFromIndex:6]; NSLog(@"%@", subStr); // 输出:"World" ``` 2. substringWithRange方法 该方法用于截取字符串从指定范围内的所有字符,返回截取后的字符串。它的方法签名如下: ``` - (NSString *)substringWithRange:(NSRange)range; ``` 其,range是一个NSRange类型的结构体,用来指定要截取的字符串的范围。 示例代码: ``` NSString *str = @"Hello World"; NSRange range = NSMakeRange(6, 5); NSString *subStr = [str substringWithRange:range]; NSLog(@"%@", subStr); // 输出:"World" ``` 3. substringToIndex方法 该方法用于截取字符串从字符串开头到指定位置的所有字符,返回截取后的字符串。它的方法签名如下: ``` - (NSString *)substringToIndex:(NSUInteger)to; ``` 其,to是一个NSUInteger类型的参数,表示要截取的结束位置,从0开始计数。 示例代码: ``` NSString *str = @"Hello World"; NSString *subStr = [str substringToIndex:5]; NSLog(@"%@", subStr); // 输出:"Hello" ``` 以上就是NSStringsubstringFromIndex、substringWithRange和substringToIndex方法的使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值