美文网首页
iOS包大小优化

iOS包大小优化

作者: iOS_小胜 | 来源:发表于2022-06-12 10:34 被阅读0次

一、iOS(安装)包

ipa全称为iPhone Application Archive,这里指的包在iOS其实就是安装包,直观展示就是xxx.ipa文件

二、iOS包内容

要对其优化,就要知道包里面都有什么,知道了有什么,针对不同类型的文件,做不同的处理,从而达到一定的优化。

安装包内容如下:

  • _CodeSignature文件夹:ipa包签名文件的存放文件夹

  • Assets.carAssets.xcassts在编译过程中生成的最终展示文件,默认里面存放各种分辨率图片(测试项目未使用)

  • embedded.mobileprovision:证书配置文件

  • Info.plist:项目配置表

  • PluginsApp创建的扩展,比如WidgetPushShare

  • .IprojApp所支持的语言文件

  • exec文件:可执行文件,例如widgetExtension

  • 图片资源:.png,.jpg,.webp,.gif

  • 其它资源文件

    • .xml,.json

    • .plist:项目中使用资源的.plist文件

    • .bundleMac OS下的资源包集合

    • .conf:相关的配置文件

    • .cer.der.p12:钥匙串文件

    • .wav:音频文件

    • .js.html

    • .nibXcode自带的数据文件,包含一个窗口程序和应用程序委托对象

    • .sqlite:数据库文件

    • .txt:文本文件

    • .momXcode创建的数据模型文件

三、优化策略

Xcode编译优

armv6: iPhone, iPhone 3G, iPod 1G/2G
armv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
armv7s: iPhone 5, iPhone 5c, iPad 4
arm64: iPhone X,iPhone 8(Plus),iPhone 7(Plus),iPhone 6(Plus),iPhone 6s(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)
arm64e: XS/XS Max/XR/ iPhone 11, iPhone 11 pro,iPhone 11 Pro Max,iPhone SE (2nd generation),iPhone 12 mini,iPhone 12,iPhone 12 Pro,iPhone 12 Pro Max,Phone 13 mini,Phone 13,iPhone 13 Pro,iPhone 13 Pro Max
x86_64: 模拟器64位处理器
i386: 模拟器32位处理器

Excluded Architectures中设置Release模式下 Any iOS SDK -> armv7
设置了之后,Release下把armv7的指令集排除在外。选中target会发现默认设置了 Any iOS Simulator SDK -> arm64,意思是模拟器的时候排除arm64指令集。(Xcode14以后,官方不兼容arm7s和armv7,应该不需要再设置了)

资源文件优化

1、删除无用图片资源
使用开源项目LSUnusedResources(https://github.com/tinymind/LSUnusedResources),可以根据项目实际情况定义查找文件的正则表达式。
使用建议:
勾选 Ignore similar name ,避免扫描出图片组。
在删除前在项目中进行二次全局搜索确认,是否确实没有使用。

2、图片资源压缩
将png图片格式转化为WebP,使用工具iSpart
使用工具ImageOptim或者TinyPng压缩图片

使用建议:
由于WebP 在 CPU 消耗和解码时间上会比 PNG 高两倍。所以,我们有时候还需要在性能和体积上做取舍。建议是,如果图片大小超过了 100KB,你可以考虑使用 WebP;而小于 100KB 时,你可以使用工具进行图片压缩。这两个工具的压缩率没有 WebP 那么高,不会改变图片压缩方式,所以解析时对性能损耗也不会增加。

3、代码瘦身
工程量不是很大的话,直接使用 AppCode 来做分析,那些代码量达到百万行的团队,则会自己通过 Clang 静态分析来开发工具,去检查无用的方法和类。

使用AppCode进行无用代码删除有一些注意点:
-JSONModel 里定义了未使用的协议会被判定为无用协议;
-如果子类使用了父类的方法,父类的这个方法不会被认为使用了;
-通过点的方式使用属性,该属性会被认为没有使用;
-使用 performSelector 方式调用的方法也检查不出来,比如 self performSelector:@selector(arrivalRefreshTime);
-运行时声明类的情况检查不出来。比如通过 NSClassFromString 方式调用的类会被查出为没有使用的类,比如 layerClass = NSClassFromString(@“SMFloatLayer”)。还有以[[self class] accessToken] 这样不指定类名的方式使用的类,会被认为该类没有被使用。像 UITableView 的自定义的 Cell 使用 registerClass,这样的情况也会认为这个 Cell 没有被使用。

基于以上种种原因,使用 AppCode 检查出来的无用代码,还需要人工二次确认才能够安全删除掉。

相关文章

  • iOS性能优化-包大小+linkMap分析和查找未使用类和方法

    1. LinkMap解析 导读IOS在做包大小优化的时候,需要分析包大小组成,然后通过包大小组成来有针对的做优化。...

  • iOS包大小优化

    一、iOS(安装)包 ipa全称为iPhone Application Archive,这里指的包在iOS其实就是...

  • iOS包大小优化

    安装包瘦身 安装包(IPA)主要由可执行文件、资源组成 资源(图片、音频、视频等) 采取无损压缩 去除没有用到的资...

  • 分析iOS包大小优化

    背景 包大小优化是项目开发中不可避免会遇到的,网上关于包大小优化的文章很多,每篇文章说的都不尽相同,笔者曾经根据网...

  • 今日头条安装包大小优化

    前言 今日头条 iOS 端从 2016 年起就关注到了安装包大小的问题,并启动了包大小优化。2017 年,我们将当...

  • iOS 安装包大小优化

    一安装包大小优化Asset Catalog Compiler - Options Optimization Bui...

  • iOS包大小——编译选项优化

    可执行文件中的[符号]是指程序中的所有的变量、类、函数、枚举、变量和地址映射关系,以及一些在调试的时候使用到的用于...

  • iOS优化IPA包体积大小

    随着项目的不断迭代,我们APP的体积也越来越大,这势必造成下载的资源浪费,同时也给新用户下载带来流量的浪费,因此我...

  • iOS安装包大小优化

    背景 移动开发中,对于包大小优化是项目开发中需要考虑的,尤其对于航母级App,比如QQ、手淘等。网上关于包大小优化...

  • iOS 如何缩小包体的大小 (IPA)

    下面介绍了 iOS 优化 ipa 安装包大小的几种方法。 一、配置编译选项 Genetate Debug Symb...

网友评论

      本文标题:iOS包大小优化

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