iOS 安装包优化之清理未使用的资源

关注我,每天分享一个关于 iOS 的新知识

前言

在 App 开发中,图像是最常见的资源文件类型,随着版本的迭代,某些功能删除后,涉及到的图片资源往往也不再需要了,这时候就需要及时清理掉,否则可能导致安装包变大。因此,了解如何清理 Xcode 资源非常有用。

今天就来讲讲如何优雅的清理 Xcode 中不使用的图片资源文件。

FengNiao

FengNiao 是著名的 iOS 开发者喵神的开源库,基本上是用纯 swift 写的一个命令行工具,用于从 Xcode 项目中删除未使用的图像资源文件。

1、安装

安装方式支持 Mint 和源码两种方式,如果使用 Mint,需要先使用 HomeBrew 安装 Mint,再用 Mint 安装 fengniao,在终端运行下边两条命令:

bash 复制代码
brew install mint # 安装 mint
mint install onevcat/fengniao # 安装 fengniao

使用源码方式安装则需要先把代码库克隆下载,再用 swift 命令构建,在终端运行下边命令:

bash 复制代码
git clone https://github.com/onevcat/FengNiao.git # 克隆源码仓库
cd FengNiao  # 打开源码文件夹
swift build -c release # 构建

# 最后拷贝可执行文件到你的 PATH,比如 `/usr/local/bin`
sudo cp .build/release/FengNiao /usr/local/bin/fengniao

2、用法

首先在终端导航到你的工程目录,然后执行 fengniao 命令即可:

bash 复制代码
cd 【你的工程目录】
fengniao # 执行

fengniao 命令将扫描当前文件夹及其所有子文件夹以查找未使用的图像,然后询问您是否要删除它们。在删除图像之前,请确保您有备份或版本控制系统,这将是一个不可恢复的操作。

fengniao 命令还支持一些可选参数,在终端使用 fengniao --help 命令可以看到全部使用方法。

lua 复制代码
> fengniao --help

  -p, --project:
      Xcode项目的根路径。默认为当前文件夹。
      
  --force:
      不询问直接删除不需要的文件。
      
  -e, --exclude:
      排除搜索路径,一般需要把 Carthage、Pods 等这些第三方库排除掉。
      
  -r, --resource-extensions:
      需要搜索资源文件扩展名。默认为"imageset jpg png gif pdf"
      
  -f, --file-extensions:
      在哪些类型的文件中搜索资源使用情况。默认是'm mm swift xib storyboard'
      
  --skip-proj-reference:
      跳过项目文件(.pbxproj)引用清理。如果跳过它,项目文件将保持不变。如果您试图构建多个具有依赖关系的项目,并在编译时保持.pbxproj不变,则可能希望跳过此步骤。
      
  --version:
      打印 fengniao 的版本号。
      
  -h, --help:
      打印 fengniao 的帮助信息.

一般来说,Pods 和 Carthage 文件夹是不需要检查的,因为这里存放的都是第三方库,那么可以用 --exclude 参数来排除:

css 复制代码
fengniao --project . --exclude Carthage Pods

3、与 Xcode 构建配合使用

除了上边的命令行方式,也可以通过集成到 Xcode 中,每次 build 项目时自动执行,首先来到项目的 Build Phases 中,点击加号新建 Run Script Phase:

然后在内容编辑器中增加代码:

css 复制代码
fengniao --exclude Carthage --force

关于 FengNiao 的更多内容,可以到其官方 GitHub 上查看。

LSUnusedResources

LSUnusedResources 是一款 Mac 应用程序,它的功能与 FengNiao 完全相同:清理未使用的图像和资源。它也是开源的。

用法

首先下载源码或者 app,打开之后点击 Browse.. 按钮选择项目文件夹:

然后点击 Search 按钮开始搜索,等待一会儿,下边将会出现结果,然后将结果中的图片删除即可。

参考资料

1

FengNiao: github.com/onevcat/Fen...

2

LSUnusedResources: github.com/tinymind/LS...

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
zwd200511 小时前
词频是什么?生词滑块 zipf 3.0 到 5.0 怎么调:同一屏从 0 个生词到 11 个
ios·iphone·效率工具·英语学习·词频·屏幕翻译
茶底世界之下15 小时前
灯暖窗冷,色温要不要继续降?用 Awaking 看混合光的取舍
ios
2501_9160074720 小时前
Windows OpenSSL 生成 iOS 证书,制作 p12 与描述文件,KXBuild 签名实操
windows·vscode·ios·objective-c·个人开发·swift·敏捷流程
最强小杰1 天前
gpt-image-2.5-sunburst + OpenAI SDK + Cline 怎么接?完整图生图与局部重绘教程
gpt·ios·ai·iphone
kk_net88991 天前
FSNotes:macOS 和 iOS 上的开源笔记管理器
笔记·其他·macos·ios
00后程序员张1 天前
Windows 开发 iOS App 入门,用 SwiftUI 写第一个 iOS App 装到 iPhone
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
2501_915106321 天前
抓包抓到乱码或压缩字节怎么解析,TraceEagle五种查看模式和一键解码
网络协议·计算机网络·网络安全·ios·adb·https·udp
andyweike2 天前
Swift
开发语言·ios·swift
茶底世界之下2 天前
白杯偏蓝,色温调到哪里该停?Awaking 两版正式导出
ios
静以修身zzz2 天前
OpenStack对象存储-Swift、OpenStack编排管理-heat、OpenStack网络管理-neutron
linux·运维·服务器·架构·openstack·swift