iOS-APP瘦身

作者: 斑驳的流年无法释怀 | 来源:发表于2018-08-02 11:08 被阅读461次

分析当前ipa的组成

源代码

通过生成linkmap文件,分析源代码生成的编译文件的大小。在Build Settings中Write Link Map File设置为Yes (记住release时候不要设置为Yes)。
编译之后会在build目录中生成两个LinkMap文件: XXX-LinkMap-normal-i386和XXX-LinkMap-normal-x86_64,分别代表在模拟器中32位和64位指令集生成的LinkMap文件。LinkMap的文件
LinkMap会包含每个可执行文件的偏移量及大小,所以可以很方便的知道每个可执行文件的大小。工具源码地址

资源瘦身

  • 无用的图片文件
    LSUnusedResources
  • 无损压缩图片
    ImageOptim
  • WebP图片压缩
    WebP是Google提供的一种图片编码格式,通常情况下WebP格式的图片是原始JPG/PNG图片的1/3,所以对于重度依赖图片显示的应用,转换使用WebP可以节省大量的网络传输数据和时间。对于APP瘦身,使用WebP格式可能是一种方式,可以使用WebP格式的图片替代现有的图片资源,可以一定程度的节省空间。
    WebP转换工具

iOS原生并不支持WebP格式加载,需要引入SDWebImage/WebP,参考

NSString *path = [[NSBundle mainBundle] pathForResource:@"logo" ofType:@"webp"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
UIImage *img = [UIImage sd_imageWithWebPData:data];
self.imageView.image = img;

使用WebP格式的图片,似乎就抛弃了iOS @2x @3x按照设备加载对应图片的机制,所以应该还可以删除所有@2x图片,不过加载速度比原生较慢。

代码瘦身

  • AppCode代码静态检查

AppCode提供了非常强大的代码静态检查工具,使用Inspect Code,可以找到很多代码优化的地方。可以参考这篇介绍:AppCode inspections for your code perfection

优化项目的时候,可以使用Appcode分析功能,即Inspection功能。可以检查未使用的文件,拼写问题,类型检查等多种潜在疑难杂症。打开菜单-code-选择InspectCode
优化项目的时候,可以使用Appcode分析功能,即Inspection功能。可以检查未使用的文件,拼写问题,类型检查等多种潜在疑难杂症。
打开菜单-code-选择Inspect Code

  • 清除无用代码

AppCode搜索出来的无用的Class,会有误报需要仔细检查每一个报错的代码。
使用Fui查找发现下列无用文件,同样需要double check避免误删

  • 清除无用的Import
    Fui可以用于查找无用的import,同时也提供xcfui 可以和Xcode集成。
  • 清除无用的Method
  1. 基于AppCode的扫描定期做清理
  2. 这篇文章提供了一个很好的思路可以一键删除无用方法:参考文章
  3. 查找相似的代码使用SameCodeFinder可以查找到相似的代码,最后一位数字代表两个文件的海明距离,数字越小说明两个文件越类似。

清理其他无用的代码

  1. 已经下线的陈旧代码,AB试验已经下线的代码
  2. 通过转H5、Hybrid或者RN实现的Native功能,可以定期清理
  3. 一些非核心Hybrid或者RN模块,可以考虑不要打包进入APP,通过动态下发的方式获取
  4. 代码的重构,UI组件、业务逻辑的重用等等

一些参考文章

[iOS可执行文件瘦身](http://blog.cnbang.net/tech/2544/
iOS)

APP瘦身实践资源优化、编译器配置优化、可执行文件优化

滴滴出行iOS端瘦身实践, 提供了查找无用图片的工具、WebP图片压缩、
基于clang plugin实现查找无用代码
查找类似代码

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

减小ipa体积之删除frameWork中无用mach-O文件

相关文章

iOS瘦身实践

滴滴出行iOS端瘦身实践

相关文章

  • iOS-APP瘦身

    资源优化 1. 去除无用资源 一般都是版本迭代过程中存在的图片资源。可以借助三方工具来解决: Unused-mas...

  • iOS-APP瘦身

    分析当前ipa的组成 源代码 通过生成linkmap文件,分析源代码生成的编译文件的大小。在Build Setti...

  • iOS-App瘦身

    一般来说,我们开发完一个项目,是要进行编译打包,要上架到appstore供用户下载的。如果IPA包过大,我们上传a...

  • iOS-app瘦身

    003、今日头条优化方案 https://www.jianshu.com/p/2c914530b54b[https...

  • iOS-app瘦身工具

    一、废弃图片检测工具—LSUnusedResources 1、介绍和使用方法 Xcode工程中废弃切图文件检测工具...

  • iOS-app上架

    iOS-app上架流程

  • iOS学习资料整理及前端一部分

    ios相关 ios-app开源项目 ios-app开源项目 唐巧的博客 iOS开发常用三方库、插件、知名博客等等 ...

  • iOS-APP性能优化-安装包瘦身

    安装包瘦身 在上一篇启动优化中,有分析过项目中所有的代码、资源都在XX.app包里面,将来Xcode会将这个XX....

  • 上架APP进行版本升级检测

    文章来源:iOS-App版本更新提示AppDelegate.m文件: 提示更新的界面增加:

  • iOS放大镜、调试工具、图片滤镜、导航渐变、动画效果等源码

    iOS精选源码 iOS放大镜 WKWebView图片预览框架 iOS-APP内置调试工具(debugging-to...

网友评论

    本文标题:iOS-APP瘦身

    本文链接:https://www.haomeiwen.com/subject/phsjvftx.html