IOS

iOS打包ipa廋身

2019-02-12  本文已影响1人  二猪哥

下面介绍了 iOS 优化 ipa 安装包大小的几种方法。

一、配置编译选项 Genetate Debug Symbols 设置为 NO

当 Generate Debug Symbols 设置为 NO 的时候,在 Xcode 中设置的断点不会中断,同样生成的 ipa 安装包也会小一些。

Genetate Debug Symbols.png

二、Asset Catalog Compiler - Options Optimization

Build Setting > Asset Catalog Compiler - Options


Options.png

在Optimization优化设置项有三个选项,不指定、time和Space。Optimization nothing是Xcode默认的设置。
与预想的不同,在选择Optimization time时,编译时长并没有得到优化。
但在Optimization space时,编译耗时基本没有波动,但编译生成的app大小有不小程度的优化。

三、适当舍弃架构 armv7

因为 armv7 用于支持 4s 和 3gs ,4s 是 2011 年 11 月正式上线,虽然还有小部分人在使用,如果是是追求包体大小的完全可以舍弃了。

四、Deployment Postprocessing和Strip Linked Product

Xcode中Strip Linked Product 的默认设置为YES,但是Deployment Postprocessing的默认设置为NO。在Deployment Postprocessing 是Deployment的总开关,所以在打开这个选项之前 Strip Linked Product是不起作用的。注:当Strip Linked Product设为YES的时候,运行app,断点不会中断,在程序中打印[NSThread callStackSymbols]也无法看到类名和方法名。而在程序崩溃时,函数调用栈中也无法看到类名和方法名。

Build Setting > Deployment Postprocessing - >YES Deployment.png 打开这两个选项之后进行编译,可以去除不必要的调试符号,编译出的安装包大小有了较大程度的优化。

五、清理未被使用的图片资源

(1)开源工具:LSUnusedResources

LSUnusedResources.png

注:为了避免对资源的误删操作,建议在该工具输出结果后对结果中的资源名复制并在Xcode的全局查找中进行校验。

下载安装:LSUnusedResources.app.zip

Github地址:LSUnusedResources

(2)通过终端 执行 shell 命令

a. 第一步建立.sh 文件 如 unusedImage.sh

vim unusedImage.sh
#!/bin/sh
PROJ=`find . -name '*.xib' -o -name '*.[mh]'`

for png in `find . -name '*.png'`
do
    name=`basename $png`
    if ! grep -qhs "$name" "$PROJ"; then
        echo "$png is not referenced"
    fi
done

b. 进入你要查找的工程目录下执行 这段 shell 脚本

sh unusedImage.sh 

六、清理未使用的文档资源

文档资源的优化
文档资源主要是排查:
是否有不必要的文档资源,如果过期的旧版本所需要的文档资源 清理即可。
优化文档资源大小,主要是优化精简文档内容。

七、二进制包优化

二进制包是由各种代码文件,静态库 动态库 经过编译后生成的可执行文件。

这里推荐一个归类工具:https://github.com/huanxsd/LinkMap,使用方法很详细,结果类似如图:

LinkMap.png 通过对上面的文件进行分析,就知道每个类在最终的可执行文件中占据的大小。 然后有针对性的进行优化就可以了。

八、优化 第三方库

查找内部使用到的第三方库,一方面可以进行删减代码,用不到的类,直接删除,还有第三方库中的图片资源统统删除掉,如果能够自己手写实现的,那费功夫自己写吧

九、其他的资源相关:

图片

压缩图片 不重要的图片可适当采用 8bit PNG图片

去掉无用的图片

音频

视频

Assets

上一篇 下一篇

猜你喜欢

热点阅读