iOS项目优化:可执行文件瘦身

1.删除无用资源文件

1X的图片可以全部删掉

重复的图片分两种,一种是名字一样的图片,如果你使用.xcassets来管理图片,那么Xcode的左边栏会有警告提示图片名字重复,直接按提示一一处理即可。另一种是名字不一样但是文件一样的图片,我们使用了一个Python脚本(@甘超江 大神出品)来扫描,每次编译的时候执行该脚本,如果有扫描命中则会让Xcode编译失败,此时需要人工去处理。需要注意的一点就是使用.xcassets来管理图片的时候回存在一个映射关系,通过imageNamed:方法使用的名字和图片的真实名字有可能不一样,脚本扫描的时候需要特别处理下。

未使用的图片可以通过LSUnusedResources扫描出来,不过要注意的是可能会有误伤,该工具是全匹配,一些拼接名字来使用的图片要注意手动剔除。笔者就因为误删图片被惩罚过o(╯□╰)o

一些音频、视频和多余的plist文件以及readme文件什么的目测只能肉眼扫描了,我们没用到这些资源暂时没这个问题。

2.资源压缩

首先是图片压缩,ImageOptim工具可以实现无损压缩。

另外关于图片,建议使用Apple推荐的.xcassets来管理,它会把里边的所有png格式的图片压缩成一个Assets.car文件,压缩比率比其他方式管理图片要高。不过测试发现jpg图片不会在Assets.car文件里。

另如果你有用到音频或视频资源,也可以考虑压缩。

3.H5页面远端化

如果你的H5有本地页面和资源,可以考虑全部远端化。本地资源主要是一些js、html文件和图片。

4.代码部分优化

通过appcode 打开对应的工程文件 选择 Code - > inspect Code 分析代码,去掉无用的引用及代码。

5.分析可执行文件

(下面的方式 我试过之后暂时未看懂)

使用link map
XCode开启编译选项Write Link Map File
XCode -> Project -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes
在 编译后的工程文件夹可以找到 命名为 xxxlinkmapxxx.txt的文件(查找方式为,Winodw - Project - derived data - build - Intermediates -xxx.build - 对应debug或者Release文件下)分析 该txt文件,可以得到项目编译后各个模块生成的.o文件在可执行文件中的组成。

如何分析
本文采用node + js 的方式分析。 js代码地址https://gist.github.com/bang590/8f3e9704f1c2661836cd 使用方法,node js路径 xxlinkmapxxx.txt 路径 -hl 分析出来 过大的可以考虑缩减和替换。

时间: 2024-10-08 18:34:14

iOS项目优化:可执行文件瘦身的相关文章

iOS应用代码段瘦身办法

iOS应用代码段瘦身办法 大型app应对苹果官方代码段大小限制的小伎俩- 背景 苹果官方文档 对二进制 __TEXT 段大小有限制: 代码实在瘦不下去怎么办? 解决方案 利用 rename_section 过审核,在Xcode中向 "Other Linker Flags" 中添加 -Wl,-rename_section,__TEXT,__cstring,__RODATA,__cstring -Wl,-rename_section,__TEXT,__const,__RODATA,__co

iOS可执行文件瘦身方法

缩减iOS安装包大小是很多中大型APP都要做的事,一般首先会对资源文件下手,压缩图片/音频,去除不必要的资源.这些资源优化做完后,我们还可以尝试对可执行文件进行瘦身,项目越大,可执行文件占用的体积越大,又因为AppStore会对可执行文件加密,导致可执行文件的压缩率低,压缩后可执行文件占整个APP安装包的体积比例大约有80%~90%,还是挺值得优化的.下面介绍一下在研究可执行文件过程中发现的可以优化的点.研究的过程使用了linkmap,linkmap的介绍跟生成可以参考另一篇文章—iOS可执行文

性能优化7--App瘦身

1. 前言 如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视.关于瘦身的原因,大概有以下几个方面: 对于用户来说,在功能差别不大的前提下,更小的Apk大小意味更少的流量消耗,也意味着更多的用户下载: 对于产品来说,大于竞品的Apk意味着较低的下载基数,不利于验证产品策略: 对于开发人员来说,App瘦身则是一次技术优化.技术提升的机会: 2. Apk的组成 2.1 Apk典型组成 一个典型的Apk组成 下表为Apk目录及文件说明: 文件/目录 说明 assets/ 存放一些静态文件

iOS 项目优化

/1.数据获取下载(特别是大数据)最好放在global_queue中操作 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ }); //2.UI更新放在main_queue中更新(不管当前线程是否处于主线程) dispatch_async(dispatch_get_main_queue(), ^(void) { [yourTableView reloadData]; }); //使用B

安卓-APP瘦身优化

APP优化 APP瘦身 #1. 图片的优化 ☆☆☆☆☆ s1.png图片压缩裁剪,打包APP后资源文件分50k+大小图片重点优化,10k+图片选择优化: s2.图片资源格式处理(大小):.png > .jpg > .webp,条件合适选择应选择.webp: s3.使用矢量图: #2.开启混淆与压缩 ☆☆☆☆☆ s1.gradle shrinkResources设置为true,minifyEnabled设置为true: s2.gradle minifyEnabled可单独开启,shrinkRes

iOS安装包瘦身的那些事儿

在我们提交安装包到App Store的时候,如果安装包过大,有可能会收到类似如下内容的一封邮件: 收到这封邮件的时候,意味着安装包在App Store上下载的时候,有的设备下载的安装包大小会超过100M.对于超过100M的安装包,只能在WIFI环境下下载,不能直接通过4G网络进行下载. 在这里,我们提交App Store的安装包大小为67.6MB,在App Store上显示的下载大小和实际下载下来的大小,我们通过下表做一个对比: iPhone型号 系统 AppStore 显示大小 下载到设备大小

[转]基于clang插件的一种iOS包大小瘦身方案

转自:http://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651112856&idx=1&sn=b2c74c62a10b4c9a4e7538d1ad7eb739 iOS包瘦身,对于一般团队来说并不是优化的首要目标,但是对于一些安装包已经超限的团队来说非常关键.微信和阿里移动安全都分享过相关的内容,后者采用的是去除无用代码的思路,感兴趣的同学可以阅读: iOS瘦身之删除无用的mach-O文件 而本文则将这个思路发挥到了极致,欢迎

iOS App 瘦身方案

缩减iOS安装包大小是很多中大型APP都要做的事,一般首先会对资源文件下手,压缩图片/音频,去除不必要的资源.这些资源优化做完后,我们还可以尝试对可执行文件进行瘦身,项目越大,可执行文件占用的体积越大,又因为AppStore会对可执行文件加密,导致可执行文件的压缩率低,压缩后可执行文件占整个APP安装包的体积比例大约有80%~90%,还是挺值得优化的.下面介绍一下在研究可执行文件过程中发现的可以优化的点.研究的过程使用了linkmap,linkmap的介绍跟生成可以参考另一篇文章—iOS可执行文

iOS 9 App 瘦身功能

App 瘦身简介 当前市场上存在大量的 iOS 设备,因此有多种屏幕尺寸和分辨率,要想保证一个 App 在多种屏幕下的展示效果需要大量的资源(比如 png.jpeg 以及二进制的 PDF).不幸的是,这导致用户需要下载一个巨大的程序包(之前的 iOS 版本强制用户下载全部 App 文件,包括他们在用 iPhone 时永远也不会用到的 iPad 适配图片).16G 的 iPhone 仍然有不少人在用(并且可能短时间内不会消失),所以你要缩小 App 体积从而可以快速下载并且保证用户有足够的空间.A