资源级的瘦身
- 使用LSUnusedResources删除无用图片。注意只是简单的删除。需要自己在此确认。
- 使用WebP代替PNG, 转换及压缩工具isparta。
- WebP的优点:
- Webp 压缩率⾼,⽀持有损与⽆损压缩
- WebP 体积⼤幅减少,⾁眼看不出差异
缺点:Webp更加消耗性能,较PNG消耗2倍左右的CPU和解码时间
代码级的瘦身-linkmap
首先需要了解linkmap是什么?LinkMap文件是Xcode产生可执行文件的同时生成的链接信息,用来描述可执行文件的构造成分,包括代码段(__TEXT)和数据段(__DATA)的分布情况。比如说可执行文件的构成是怎样,里面的内容都是些什么,
默认xcode在debug下是不生成linkmap文件的,所以我们首先要设置在debug模式下开启生成linkmap,在build setting中搜索link map,设置write link map file为YES,再次运行可以可以在 path to link map file中找到对应生成的text文件。以为自己的地址举例:
/Users/用户名/Library/Developer/Xcode/DerivedData/项目名称-hhqqxhkyzdufzbfyuefaytyuxebf/Build/Intermediates.noindex/项目名称.build/Debug-iphoneos/项目名称.build/项目名称-LinkMap-normal-arm64.txt
其中项目名称后面的随机字符串可能不一致。分析生成的link map中的执行文件大小。WMLinkMapAnalyzer。可以查看静态库是否过大。如果过大可以参考
lipo -info libWeChatSDK.a
Architectures in the fat file: libWeChatSDK.a are: armv7 armv7s i386 x86_64 arm64
i386,x86_64,是模拟器的指令集,如果不考虑模拟器运行,可以删除。
使用下面脚本或者使用appcode的code inspect 来检查未使用的类和方法
// 查找无用的类脚本
# 使用方法:python py文件 Xcode工程文件目录
# -*- coding:UTF-8 -*-
import sys
import os
import re
if len(sys.argv) == 1:
print '请在.py文件后面输入工程路径'
sys.exit()