美文网首页
包体积瘦身

包体积瘦身

作者: tom__zhu | 来源:发表于2022-02-06 22:23 被阅读0次

包体积是什么

包体积优化前,先要明白包体积是什么,在app store上看到的体积又是什么。
在app store里装的是ipa类型的安装包,他存储了iOS应用程序的归档文件,包含被签名过后的二进制文件app、资源信息、配置信息。
在iTunes Connect可以看到我们的app代销分download size和install size



install size 是指安装在设备后占用磁盘空间
download size 是指下载的安装包ipa大小
需要注意app store提示的大小也是针对download size,也就是ipa大小


包大小包含哪几部分

正如上文提到,app store里的ipa包是包含二进制、资源文件、配置文件等。所以优化包体积可以关注在这三部分的优化上。

苹果的包体积优化方案

在iOS9之后苹果推出了三项优化App Slicing、Bitcode、On-Demand Resources

App Slicing

App Slicing帮助开发者把二进制文件中不需要的架构代码去除,并且把assets中不需要的屏幕适配图片清除。所以本地的包和App Store上最终显示的大小是不一样的,而且各个设备间也有差别。


WWDC App Thinning in Xcode

Bitcode

Bitcode是为了统一编译中间产物的格式语法的中间码,和架构有关,也就是也就是说armv7s、arm64会生成两份.bc文件,他们的作用是经过archive的app包在apple后台进行二次编译链接,并且会把不需要的架构移除,移除armv7的.bc保留arm64的.bv.这样的好处是如果以后apple推出了新的CPU架构或是优化了LLVM,就不用重新发包,因为apple会在后台自动为我们优化。

On-Demand Resource#

资源托管在苹果,独立于app store安装包,应用程序按需请求由操作系统管理下载和存储。资源包括下面类别。


On-demand resource types

二进制大小检测

包体积可以通过linkedmap检测,每个静态库的代码端和数据段都可以获取



linkmap主要包括三大部分:

  • Object Files 生成二进制用到的link单元的路径和文件编号
  • Sections 记录Mach-O每个Segment/section的起始地址和大小
  • Symbols 按顺序记录每个符号的起始地址和大小

推荐一个GUI工具快速查看#

每个静态库大小
总大小
或者使用CLI,自己开发的CLI工具用来分析linkmap以及资源大小
壳工程二进制大小
系统链接库二进制大小
静态库target二进制大小

推荐一个三方的工具,不过简单使用发现有链接问题😅#
每个静态库都是由独立团队维护,所以我们需要为他们分配大小合理的上限,如果需要超过配额是可以通过降低对应的大小换取,这个过程可以通过CICD过程作自动检测,如果超过大小上限熔断合并即可。

CICD hook

体积优化手段

我们开发了工程化的性能分析优化工具,包括包大小计算和压缩,代码质量扫描、启动性能分析和监控开发提效工具,下面列举包大小相关的特性

  1. 无用类无用方法扫描:静态检测工程里包含的所有类和方法,未被其他类引用或使用,不包括动态调用方式,按业务线各个库分别输出无用类和方法。
  2. 重复代码扫描:扫描工程中代码拷贝,代码重复按行数判断,最小重复是100行。主要检查单个工程中代码拷贝情况。
  3. 线上无用页面、功能等监控:统计创建的页面、网络请求等线上使用情况,没有使用或是低频页面可以建议删除。
  4. 按日期、版本对比模块包体积变化情况:根据日期和版本对比业务线下各个二进制和资源大小变化情况。
  5. 竞品IPA包自动下载:自动下载竞品最新版本IPA包,分析包大小以及历史功能溯源。
  6. 包大小计算:每天定时更新代码并编译然后计算app整体包大小,输出各个模块二进制大小、资源大小以及单个代码文件二进制大小和单个资源文件大小。
  7. 图片/json文件压缩:将单个图片或者zip包压缩,压缩后大小平均会减少50%以上,色彩较为单一的图片可以压缩70%以上。
  8. 无用图片、重复图片扫描:支持检测app内imageasset、jpg、png、gif、png、webp、json等资源文件使用情况

相关文章

  • 包体积瘦身

    包体积是什么 包体积优化前,先要明白包体积是什么,在app store上看到的体积又是什么。在app store里...

  • iOS包体积瘦身

  • Android App安装包瘦身计划

    Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文...

  • 真题

    1、iOS瘦身:代码瘦身、资源优化。(安装包体积优化,图片资源优化的策略)(怎么删除无用的图片?怎么压缩图片?)2...

  • 减小release安装包体积,尝试瘦身

    问题: release包编译出来的体积在53.9M,有些大,所以想着对安装包进行瘦身!!! 目前安装包为:53.9...

  • 减包与APK-Checker原理分析

    为啥要优化包体积 推广成本 下载转化率 运行内存 安装时间体积优化思维导图.png APK背景知识 对于APK瘦身...

  • App瘦身

    App瘦身就是在不减少App功能的前提下,通过一些技巧来减少APK包的体积, 从而提升用户的下载体验,App瘦身的...

  • 开发小工具2-项目瘦身easySlimAssets

    项目迭代素材太乱导致包体积无法控制?,一招搞定素材引用检查,安装包快速瘦身: 拖入项目所在的文件夹,一键检测,批量...

  • 包体积优化

    为什么需要优化包体积 下载转化率,包体积增加不利于用户下载 推广成本,包体积增大推广成本也会加大 应用市场限制 包...

  • 成功逆袭:越来越胖怎么能忍,我的APK瘦身之路!

    前言 随着版本迭代,功能增加安装包体积也会慢慢增大。本文主要是介绍APK瘦身中用到的一些方法。 APK分析 既然是...

网友评论

      本文标题:包体积瘦身

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