iOS 的 App 为啥体积都这么大了?

2019-02-03 11:05:47 +08:00
 icylogic

平时没注意容量问题,这几天换了新手机 restore 的时候感觉很慢,才发现现在 App 都 100 MB 起步了。这 …… PC 平台上也都算是比较大的应用了啊, 谁能解释下这体积膨胀主要是因为什么? 图标之类的 assets ? swift 本身或者 react 之类的技术带来的膨胀?



(图中体积是包含数据的,不过点进去可以看到应用本身体积也都是这个量级,淘宝京东 Dropbox 都是 奔着 200 MB 去了)

这个基本不影响我使用,我目前还没遇到过不够用的情况,就是纯好奇。

9329 次点击
所在节点    Apple
34 条回复
cyn
2019-02-04 02:42:49 +08:00
空间换时间?
lrigi
2019-02-05 00:48:01 +08:00
炉石传说 3.87G
我更好奇这个....全是高清的图片动画和音频嘛
Admstor
2019-02-05 22:44:15 +08:00
炉石基本是图包
PC 版也大有限一点而已

现在移动应用大部分就是越来越垃圾
zmlu
2019-02-06 19:59:42 +08:00
王者荣耀顶一个 win10,半个 LOL
icylogic
2019-02-06 20:55:23 +08:00
@zmlu 我觉得以游戏的素材量还是可以理解的 ……
lizhuoli
2019-02-07 09:17:39 +08:00
我是 iOS RD 究其原因,看你列举的这些应用,可以说明一下原因:

1. Swift 库,在 iOS 11 设备上,会增加 12MB 左右,原因是 Swift ABI 没有固定,版本不兼容,因此系统没有内置 Swift runtime(libswift.dylib),每个 App 单独拷贝了一份在 App 版包中。而古老的 OC 运行时 libobjc 从 iOS 1 就开始内置。

2. 大量跨端解决方案的引入,如 React Native,增量 8MB ; Flutter,增量 28MB。之所以引入越来越多跨端解决方案,而不是继续使用原生 SDK,是因为随着移动开发领域幕落西山,RD 开发相对逐年增高,两个团队使用完全不同的技术栈,开发相同的功能和 UI,已经跟不上 PM 的需求进度,必然采取的妥协方案。如果移动端有前端这样数量的开发者,这个问题不会凸显出来。

3. 社交系列 App 大量使用短视频,直播应用,由于为了兼容性和最大程度的泛娱乐定制,大部分这类 App 都会引入 FFMpeg Lua OpenGL Protobuf 等各种解决方案,一套短视频集成可能会增大包大小 40MB,你说不要? KPI 不答应

4. 快速迭代导致的代码冗余和资源冗余。在 iOS 上,本来有 App Thining 这一杀器,你实际下载的 App 包大小,只包含了你当前设备的体系结构(armv7 arm64),资源只包含了你的设备逻辑分辨率(2x/3x),多余资源不会下载。然而由于业务迭代速度,大量冗余资源被遗忘在包里,同时跨端方案无法利用 AppThingning,导致包大小增大。一些功能类似的三方库也会打包多份,是因为开发时间紧,没有时间去写一个适配层,新写的功能用新库,旧的也不能删
lizhuoli
2019-02-07 09:22:28 +08:00
再者,我看你的国产 App,都包含了春节活动,这种活动一般需要大量资源(图片,音频,视频),以头条的发财中国年活动举例子,一个 SDK 集成,包大小增大 40MB,其中 36MB 属于资源的大小,可见包大小确实有这么大。之所以不使用全在线下载,是因为这类活动都有及时性,拉新性的目的,一旦需要在线下载整体转换率会下降很多,因此大都内置了资源包。等活动风波过去,大部分国产 App 的包大小应该会降低下来
lizhuoli
2019-02-07 09:37:16 +08:00
另外,100MB 在 PC 平台上都属于大应用,这一点也是不对的。如果你是 Windows 平台的话,你看到的 exe 安装包大小,都是经过超高压缩得到的,解压后的大小远远超过 100MB。如桌面 QQ 应该已经超过 500MB,这还是在桌面平台允许动态下发代码(动态链接库)的情况下,随着使用会越来越增加。

如果是 macOS 平台,QQ 虽然比起 Windows 平台精简了太多无用功能,在 Mac App Store 的大小也有 200+,一些简单的基于 Electron 的应用如虾米音乐,都有上百,这个 100MB 可能是几年前的平均水平,但不可能是现在的平均包大小
crystone
2019-02-07 09:57:14 +08:00
@lizhuoli 这个风波是过不去了,春节结束,马上要 214 了,马上要**了……
Rh1
2019-02-07 13:08:50 +08:00
别的不太懂,通过相册我看出了楼主大概是个单身
xjbeta
2019-02-07 13:45:10 +08:00
@lizhuoli electron 是因为 electron 一个框架就有 100M 类似的还有 qtweb 啥啥啥的一个框架
刨掉框架 大部分 electron 应用 本体并不是很大
sobigfish
2019-02-07 14:52:04 +08:00
@Rh1 #29 你知道的太多了
qio
2019-02-09 14:41:53 +08:00
@ys0290 真相
F2Sky
2019-02-10 12:45:03 +08:00
应用朝着大而全发展,功能越来越多。
没有动力去精简优化。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/532793

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX