?
[TOC]
## APP包体积优化
### 一、资源类
#### 1.图片类型
png:iOS系统推荐使用,使用assets管理,下载的安装包里,只会包含一套2x或是3x的资源。
svg: 矢量图,相对较小,大图可尝试替换成svg。
Iconfont:纯色图标可采用,保真缩放,体积小,参考https://github.com/JohnWong/IconFont;
#### 2.压缩资源
图片可经过[tinypng](https://tinypng.com)压缩,官方提供photoshop插件
原理是:把相似像素的24bit位用8bit位来表示,并且移除了不必要的元数据,是有损压缩,不过肉眼很难看出来。
~~ImageOption~~
Compress PNG Files过程中会将png图片压缩,是否与:冲突待验证。。。。
#### 3.视频/音频/大图放在服务器
#### 4.夜间模式适配
采用tint color 替代两张切图方案;
#### 5.On Demand Resource
按需加载资源,部分资源可托管到服务器,需要用的时候再下载;
使用方法文档:https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/index.html#//apple_ref/doc/uid/TP40015083-CH2-SW1
### 二、代码类
#### 1. 删除无用\重复资源和代码
使用[LSUnusedResoures](https://github.com/tinymind/LSUnusedResources)或[FenNiao](https://github.com/onevcat/FengNiao)排查无用资源
使用[fdupes](https://github.com/adrianlopezroche/fdupes)扫描重复资源
#### 2.第三方库
整合删除功能相似相近的第三方库,不要为了一个小功能而引入整个库。对第三方库的使用进行严格的准入评估,避免滥用。
### 三、编译选项
#### enable bitcode
bitcode允许苹果在后期重新优化程序的二进制文件而不需要重新提交版本,如果App支持bitcode,App Bundle(项目中所有的target)中的所有的Apps和frameworks都需要包含Bitcode。
#### Strip symble information
#### Dead code stripping
默认开启,C/C++/Swift 等静态语言编译器会在 link 的时候移除未使用的代码,但是对于 Objective-C 等动态语言是无效的。
#### Assert Catalog Complier
在Optimization优化设置项有三个选项,空、time和Space。默认是空。
Optimization space可以优化包体积
#### Apple Clang - Code Generation
##### Optimization Level
Optimization Level编译参数决定了程序在编译过程中的两个指标——编译速度和内存的占用,也决定了编译之后可执行结果的两个指标——速度和文件大小。Optimization Level分为7个级别-O0、- O1、-O2、-O3、-Os、-Ofast,-Oz,一般debug为-O0,release为-Os
##### Debug Information Level
默认值不需要修改
##### Generate Debug Symbols
默认值不需要修改,表示打包时是否生产symbol文件,关闭后虽然会减少包体积,但是会影响定位崩溃;
#### LTO(Link-Time Optimization)
参考文档:[LTO开启后进行了那些优化](https://www.jianshu.com/p/58fef052291a)
?
fdupes - 查找重复资源文件 - Plucky - 博客园
iOS 瘦身 - 简书
无用图片资源的删除。【挺好用的】
? ? ?工具:LSUnusedResources(https://github.com/tinymind/LSUnusedResources)
Xcode工程中废弃切图文件检测工具LSUnusedResources - 简书
iOS项目清除图片之LSUnusedResources的使用 - 简书
https://www.jianshu.com/p/f1a113a27537?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
fdupes - 查找重复资源文件 - Plucky - 博客园
Linux下使用fdupes删除指定目录下重复文件 开源地理空间基金会中文分会 开放地理空间实验室
fdupes - 查找重复资源文件 - Plucky - 博客园
|